linq-to-sql null或default

时间:2012-05-25 14:06:37

标签: c# linq-to-sql

我有一个如下所示的查询:

var TheQuery = (from....
               where x.TheDate >= StartDate && x.TheDate <= EndDate
               select new MyModel()
               {
                   Total = (int?)x.Count() ?? 0,
                   ....
               }).Single();

基本上,我正在查询两个日期之间的一些记录。如果日期有0个值,则返回0作为总计。但是,如果根本没有值,则返回null并崩溃。我可以添加.SingleOrDefault()但它会返回null而不是填充为0的MyModel。属性Total被定义为int。

我该如何解决这个问题?

由于

4 个答案:

答案 0 :(得分:4)

Count具有带谓词的重载,并且当没有项与谓词匹配时返回0

 var result = new MyModel {
                          Total = <yourDataSource>
                            .Count(x.TheDate >= StartDate && x.TheDate <= EndDate)
                          };

答案 1 :(得分:2)

if(TheQuery !=null || TheQuery .Count()>0){
 //do something you wanna do

}

 var v = TheQuery.ToList();

现在检查

if (v.Count > 0)

答案 2 :(得分:0)

您应该选择:

int count = (from x in ...
where x.TheDate >= StartDate && x.TheDate <= EndDate
select c).Count();

这就是你想要的。

答案 3 :(得分:0)

var TheQuery = (from....
               where x.TheDate >= StartDate && x.TheDate <= EndDate
               select new MyModel()
               {
                   Total = (int?)x.Count() ?? 0,
                   ....
               }).DefaultIfEmpty(0).Single()'