Я создаю метод, который собирает общие суммы в течение месяца. Проблема состоит в том, что не может быть, взимает за некоторые объекты в данном месяце, таким образом, никакие строки не были бы возвращены.
Я вижу, как это было бы ошибка без данных:
double fuelCost = (double)(from a in db.EquipmentFuelLogs
where a.wdEquipmentMainGeneralOID == vehicleKey &&
(monthBeginDate < a.Date1 && a.Date1 < monthEndDate)
select a.TotalCost).Sum();
Что лучший подход не должен обнаружить топливные транзакции в течение того месяца и установить стоимость топлива на 0? Просто попытка ловит? Эта статья говорила о проблеме, но никаком решении.
Я добавил catch, чтобы поймать ошибку. Другого решения я так и не нашел.
Проблема в том, что where не возвращает последовательность, поэтому сумма не может работать, однако если вы используете .DefaultIfEmpty
перед суммой, она работает нормально.
decimal? orderValue =
orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost);
Надеюсь, это поможет.