这是有问题的查询
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 to Many) ExpenditureDetails
ExpenditureDetails (1 to Many) ExpenditureAmounts
ExpenditureAmounts (1 to 1) CommittedMonthlyRecords
ProjectedEac 是 CommittedMonthlyRecords 上的一个十进制字段。
我在单元测试中发现的问题(尽管不太可能发生),以下行可能为空:
detail.ExpenditureAmounts.FirstOrDefault(
amount => amount.isCurrent && !amount.requiresAudit)
我的原始查询是一个嵌套循环,在其中我将多次访问数据库,我不想重复。我在这里查看了一些类似的问题,但解决方案似乎不适合。
有任何想法吗?