0

我有一个看起来像这样的查询:

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

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

我该如何解决这个问题?

谢谢

4

4 回答 4

4

Count 有一个谓词的重载,当没有项目与谓词匹配时返回 0

 var result = new MyModel {
                          Total = <yourDataSource>
                            .Count(x.TheDate >= StartDate && x.TheDate <= EndDate)
                          };
于 2012-05-25T14:14:52.773 回答
2
if(TheQuery !=null || TheQuery .Count()>0){
 //do something you wanna do

}

或者

 var v = TheQuery.ToList();

现在检查

if (v.Count > 0)
于 2012-05-25T14:08:15.113 回答
0

你应该选择:

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

那就是你想要的。

于 2012-05-25T14:14:55.223 回答
0
var TheQuery = (from....
               where x.TheDate >= StartDate && x.TheDate <= EndDate
               select new MyModel()
               {
                   Total = (int?)x.Count() ?? 0,
                   ....
               }).DefaultIfEmpty(0).Single()'
于 2012-05-25T14:15:23.707 回答