我有一个这样的对象:
public class MyObject{
public int Prop1 {get;set;}
}
我正在执行一个linq to sql查询,它返回一个MyObject列表,如下所示:
var TheQuery = from ....
where ....
select new MyObject()
{
Prop1 = (...... ).Sum( d => d)
}.ToList();
问题是Prop1是子查询的总和,有时可能没有返回任何内容,Sum为null,因为它是一个int而无法分配给Prop1。
有什么好方法。
感谢您的建议。
答案 0 :(得分:1)
如何使用范围变量:
var TheQuery = from ....
where ....
let subquery = (...... )
select new MyObject()
{
Prop1 = subquery!=null ? (subquery.Sum( d => d) ?? 0) : 0;
}.ToList();
答案 1 :(得分:1)
我只是将您的财产宣传为int?
。你没有任何总和,最好将其表示为null。基本原理是应该可以使实际和为0.在这种情况下,您没有实际值的总和,因此保持null结果可以保留此差异。
否则,您可以考虑(假设查询将值返回为可为空)在结果上调用.GetValueOrDefault()
,这会在数值类型的情况下将空值规范化为0。