2010-03-27 149 views
1

我試圖做亞音速3使用linq左連接,但它似乎不工作,我得到一個大錯誤。左亞音速加入3

 var post = from p in Post.All() 
        join q in Quote.All() on p.ID equals q.PostID into pq 
        where p.ID == id.Value 
        from qt in pq.DefaultIfEmpty() 
        select new {p, qt}; 

我使用亞音速3,最新的Git版本來自Rob,但我得到一個錯誤,見下文,當我嘗試左連接。 我已經搜索,但我沒有找到任何解決方案。

任何人都可以向我解釋爲什麼錯誤以及如何解決它? 由於

Expression of type 'System.Collections.Generic.IEnumerable1[GetAQuote.Post]' cannot be used for parameter of type 'System.Linq.IQueryable1[GetAQuote.Post]' of method 'System.Linq.IQueryable1[<>f__AnonymousType221[GetAQuote.Post], System.Collections.Generic.IEnumerable1%5BGetAQuote.Quote%5D, System.Linq.Expressions.Expression1[System.Func2%5BGetAQuote.Post,System.Int32%5D%5D, System.Linq.Expressions.Expression1[System.Func2%5BGetAQuote.Quote,System.Int32%5D%5D, System.Linq.Expressions.Expression1[System.Func3%5BGetAQuote.Post,System.Collections.Generic.IEnumerable1[GetAQuote.Quote],<>f__AnonymousType22%5BGetAQuote.Post,System.Collections.Generic.IEnumerable 1%5BGetAQuote.Quote%5D%5D%5D%5D「> GetAQuote.Post,System.Collections.Generic.IEnumerable1 [GetAQuote.Quote]]]羣組加入[郵政,報價單,的Int32,<> f__AnonymousType22'`

回答

0

解決左連接在Subsonic3你只需要設置.AsEnumerable()方法在你的LINQ查詢。

試試這個

categories.AsEnumerable()或products.AsEnumerable()

+1

當我嘗試這是我過去的錯誤,但結果數據庫活動是從兩個表中選擇所有,顯然留下所有加入邏輯在覈心完成。這是不對的,是嗎? – 2011-04-25 22:03:26

+0

@凱利,我一直在研究亞音速3的核心,是的,這似乎是發生了什麼。 '.AsEnumerable'顯然等同於'.ToList',因爲它從數據庫中獲取絕對的一切。此外,Subsonic似乎沒有任何代碼來處理嵌套查詢 – Earlz 2011-06-27 22:28:47