2013-03-25 36 views
0

可以說我有這個IQueryable變量:空值使用IQueryable的實體框架時

var result= (from fruit in fruitTable 
       join dapple in applesIQuery on fruit.fruitType equals dapple.fruitType into apples 
       from apple in apples.DefaultIfEmpty() 
       select new foo); 

applesIQuery來自另一個IQueryable是由另一組的聯接。

applesIQuery =(from a in anotherTable select new {id = foo}) ; 

我需要治療的情況下applesIQuery == null,基本上創建具有ID = 0 1個元件的列表,但沒有轉化IQueryableIEnumerable。例如:

applesIQuery =(from a in anotherTable select new {id = foo})?? Iqueriable {new {id=0}} ; 

任何指向正確方向的指針?

+0

你當然可以構造這樣的查詢,但它會在運行時失敗,因爲EF無法翻譯。 EF LINQ支持非常糟糕,並且受到了阻礙。 – usr 2013-03-25 10:07:09

+0

一個解決方案將爲該查詢創建一個poco entioty。我需要爲將來的查詢做這件事;那是我想避免的事情 – 2013-03-25 10:08:57

+0

我的觀點是,EF無法在您創建序列的地方處理任何類型的查詢你自己。無關緊要(無論是實體,其他對象還是簡單的整數)。它會編譯並出錯。 – usr 2013-03-25 10:10:05

回答

1

applesIQuery屬於IQueryable類型,不會爲空。假設你的意思是,如果查詢不返回任何結果,嘗試這樣的事情:

applesIQuery = applesIQuery.Count() == 0 ? new ArrayList(){ new { id = 0 } }.AsQueryable() : applesIQuery; 
+0

這正是我用過的。我花了一段時間才得出結論:) – 2013-04-03 12:47:17