我有一个如下所示的查询:
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。
我该如何解决这个问题?
由于
答案 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()'