我喜欢在 db 表上编写综合查询,如下所示:
Decimal sum = MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value.GetValueOrDefault(0));
不幸的是,如果 where 子句根本不返回任何元素,它就会引发错误。在使用 .Sum 之前,我应该检查 .Any 是否有一些元素,但生成的代码与最初的代码相比很难看。不要认为放置一个 try/catch 块是一个好的解决方案。
您有比以下代码更好的建议吗?
if (MyDataContext.MyTable.Where(el => el.Client == selectedClien).Any())
sum = MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value.GetValueOrDefault(0));
else sum = 0;
谢谢菲利波
经过更多调查后添加:
MyDataContext.MyTable.Where(el => el.Client == selectedClien).Sum(el => el.Value).GetValueOrDefault(0)
当集合为空时,上面的代码运行良好。我将 'GetValueOrDefault(0)' 放在 .Sum() 内的 lambda 中的原因是字段 'Value' 是 Decimal?,所以它可能为空。我还没有测试某些元素具有空值的情况。