Как заставить Сумму linq возвратить пустой указатель, если суммированные значения являются всем пустым указателем

Бэкенд файловой системы только стоит посмотреть на то, если Вы не собираетесь использовать базу данных для какой-либо другой части Вашей системы. При использовании базы данных затем, бэкенд файловой системы не имеет ничего для рекомендации этого.

бэкенд кэш-памяти намного более быстр, чем бэкенд базы данных, но Вы рискуете очищаемой сессией и некоторые Ваши потерянные данные сессии.

, Если Вы действительно, веб-сайт действительно интенсивного трафика и кодируете тщательно, таким образом, можно справиться с потерей сессии затем, используют кэш-память. Если Вы не используете использование базы данных, кэш файловой системы, но бэкенд базы данных по умолчанию является лучшей, самой безопасной и самой простой опцией почти во всех случаях.

14
задан GSerg 8 December 2016 в 10:10
поделиться

3 ответа

Наряду с предыдущим предложением для метода расширения - вы можете использовать тернарный оператор ...

var duration = Level3Data.AsQueryable().Any(d => d.DurationMonths.HasValue) 
               ? Level3Data.AsQueryable().Sum(d => d.DurationMonths) 
               : null;
11
ответ дан 1 December 2019 в 13:21
поделиться

Вы можете использовать Aggregate для предоставления настраиваемого кода агрегирования:

var items = Level3Data.AsQueryable();
var duration = items.Aggregate<D,int?>(null, (s, d) => (s == null) ? d.DurationMonths : s + (d.DurationMonths ?? 0));

(при условии, что элементы в Level3Data имеют тип D ])

5
ответ дан 1 December 2019 в 13:21
поделиться

Используя только Sum, это невозможно. Как вы указали в своем вопросе, вам нужно будет проверить эту ситуацию перед тем, как позвонить Sum:

var q = Level3Data.AsQueryable();
var duration = q.All(d => d.DurationMonths == null)
                   ? null
                   : q.Sum(d => d.DurationMonths);
1
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: