2012-10-15 94 views
0

我有一個查詢,看起來像這樣:LINQ返回的對象,即使空

var TheQuery = (from t in MyDC.Table 
       where.... 
       select new MyModel() 
       { 
        Property1 = (int?)... ?? 0 
       } 

有時,在查詢where條款沒有返回數據做select。發生這種情況時,MyModel爲空。我希望與?? 0每一個屬性的查詢將仍然Property1集返回一個對象爲0

如何重寫這個,這樣,當不存在數據來填充爲MyModel,爲MyModel不回來空?

+0

你不能檢查計數。類似於TheQuery.ToList()。計數 – Esen

+0

不要這樣做,使用.Any(),以便它不必實際計算整個列表。 – caesay

回答

1

那麼如果沒有什麼可以選擇,那麼就不會創建MyModel。該查詢將是一個空的IEnumerable。

我不確定發生了什麼,如果你正在得到一個空對象列表。我不確定這怎麼可能。

您可以檢查,看看是否有結果查詢是這樣的:

var TheQuery = from t in MyDC.Table 
       where.... 
       select new MyModel() 
       { 
        Property1 = (int?)... ?? 0 
       } 

var after = TheQuery.Any() ? 
      TheQuery : 
      Enumerable.Range(0, 1).Select(k => new MyModel() { Property1 = 0 });