Bil*_*ill 3 c# linq entity-framework
我怎么写这样的东西:
int result = database
.Where(x => x.Name == "Criteria")
.Sum(x => x.Count)) ?? 0;
Run Code Online (Sandbox Code Playgroud)
除非linq没有找到任何东西,否则它将返回总和值,它将返回0.
编辑:该字段不能为空.
编辑2:我正在使用实体框架.
Bra*_*Rem 17
您与原始查询非常接近.您只需要转换Count变量:
int result = database
.Where(x => x.Name == "Criteria")
.Sum(x => (int?)x.Count) ?? 0;
Run Code Online (Sandbox Code Playgroud)
这样做比将它包装在Try/Catch中更有效率和优雅.
我怀疑你正在使用Entity Framework.如果你只是使用Linq-to-Objects,那么其他人提供的解决方案就可以了.
这应该工作正常(不需要?? 0):
var result = database
.Where(x => x.Name == "Criteria")
.Sum(x => x.Count))
Run Code Online (Sandbox Code Playgroud)
除非你想检查x本身是否为null:
var result = database
.Where(x => x != null)
.Where(x => x.Name == "Criteria")
.Sum(x => x.Count))
Run Code Online (Sandbox Code Playgroud)
你可以写:
int result = database
.Where(x => x.Name == "Criteria")
.Sum(x => x.Count));
Run Code Online (Sandbox Code Playgroud)
该Enumerable.Sum方法在没有结果的情况下已经返回零.从文档:
如果source不包含任何元素,则返回零.
| 归档时间: |
|
| 查看次数: |
16121 次 |
| 最近记录: |