Вот вопрос в вопросе
return _projectDetail.ExpenditureDetails
.Where(detail => detail.ProgramFund == _programFund
&& detail.Expenditure.User == _creditCardHolder)
.Sum(detail => detail.ExpenditureAmounts.FirstOrDefault(
amount => amount.isCurrent && !amount.requiresAudit)
.CommittedMonthlyRecord.ProjectedEac);
Структура таблицы
ProjectDetails (1 ко многим) ExpenditureDetails
Расходные детали (от 1 до многих) Расходные расходы
ExpenditureAmounts (от 1 до 1) CommittedMonthlyRecords
ProjectedEac - это десятичное поле в CommittedMonthlyRecords.
Проблема, которую я обнаружил в модульном тесте (хотя и маловероятное событие), заключается в том, что следующая строка может быть нулевой:
detail.ExpenditureAmounts.FirstOrDefault(
amount => amount.isCurrent && !amount.requiresAudit)
Мой исходный запрос был вложенным циклом, в котором я совершал несколько поездок в базу данных, что я не хочу повторять. Я рассмотрел некоторые похожие вопросы здесь, но решение не подходило .
Есть идеи?