在linq中处理null到sql查询

时间:2011-05-29 03:21:48

标签: c# linq

我有一个这样的对象:

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。

有什么好方法。

感谢您的建议。

2 个答案:

答案 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。