【发布时间】:2015-05-04 15:51:00
【问题描述】:
我正在尝试确定哪些发票仍有余额。我将通过实体框架查看发票,并尝试计算哪些发票的小计大于应用的付款金额。
我写了以下5个测试用例
var test1 = _invoiceRepository.Where(x => x.Subtotal > 0);
var test2 = _invoiceRepository.Where(x => x.Payments.Sum(y => y.Amount) > 0);
var test3 = _invoiceRepository.Where(x => x.Payments.Sum(y => y.Amount) < 60);
var test4 = _invoiceRepository.Where(x => x.Payments.Sum(y => y.Amount) < x.Subtotal);
var test6 = _invoiceRepository.Where(x => x.Payments.Sum(y => y.Amount) == x.Subtotal);
var test7 = _invoiceRepository.Where(x => x.Payments.Sum(y => y.Amount) != x.Subtotal);
结果返回此数量的发票
test1: 392
test2: 216
test3: 126
test4: 0
test6: 215
test7: 177
测试 1 说我有小计大于 0 的发票。
测试 2 和 3 表明我已将付款应用于发票,并且我可以正确汇总它们。
测试 4 是我感到困惑的地方。我无法返回任何将总和与表中小数进行比较的记录。我已经尝试过在所有内容周围加上括号的变体,但无济于事。
建议进行测试 6 和 7,并且这些测试有效,但如果付款少于总和怎么办?或者更大(发生了什么)?
如何修改我的 LINQ 以返回有余额的发票?
提前致谢!
【问题讨论】:
-
你确定
_invoiceRepository有余额记录吗? -
test1 确认 392 张发票中有 392 张有小计。
标签: c# linq-to-entities