0

次のようなクエリがあります。

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

基本的に、2 つの日付に基づいて多数のレコードをクエリしています。日付の値が 0 の場合、Total として 0 を返します。ただし、値がまったくない場合は null を返し、クラッシュします。追加することはでき.SingleOrDefault()ますが、MyModel に 0 が入力される代わりに null が返されます。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 に答える