У меня есть набор Linq Things
, где Thing
имеет свойство Amount
(десятичное).
Я пытаюсь сделать агрегат для этого для определенного подмножества вещей:
var total = myThings.Sum(t => t.Amount);
и это работает хорошо. Но затем я добавил условие, которое оставило меня без Вещей в результате:
var total = myThings.Where(t => t.OtherProperty == 123).Sum(t => t.Amount);
И вместо получения total = 0 или null, я получаю сообщение об ошибке:
System.InvalidOperationException: нулевое значение не может быть присвоено член с типом System.Decimal, который является типом с недействительным значением.
Это действительно противно, потому что я не ожидал такого поведения. Я бы ожидал, что итоговое значение будет равно нулю, может быть, ноль - но, конечно же, не будет генерировать исключение!
Что я делаю неправильно? Какое обходное решение/исправление?
EDIT - пример
Спасибо всем за ваши комментарии. Здесь некоторый код, скопированный и вставленный (не упрощенный). Это LinqToSql (возможно, поэтому вы не смогли воспроизвести мою проблему):
var claims = Claim.Where(cl => cl.ID < 0);
var count = claims.Count(); // count=0
var sum = claims.Sum(cl => cl.ClaimedAmount); // throws exception