2012-02-24 111 views
0

我試圖返回一個結果和linq實體查詢嵌套結果。LINQ實體嵌套選擇填充

Orders[] orderlist = 
(from m in db.Orders.Include("OrderLines") 
    where 
    areas.Contains(m.Area) 
    && m.Branch == branch 
    && (m.OrderStatus == "1" || m.OrderStatus == "4") 
    && m.SpecialInstrs == string.Empty 
    select m 
HOW??---> m.OrderLines = m.OrderLines.Where(p => (p.LineType == "1" || p.LineType == "7") && p.MBomFlag != "C").ToArray() 
).ToArray(); 

問題是,當我真的只想要某些訂單行時,包含會返回每個訂單的所有FK'd訂單行。

我如何做到這一點?

Orders和OrderList都是由L2E和poco實體生成器生成的POCO實體。

+0

是對訂單實體作爲NavigationProperty,你可以檢查,對不提供OrderLines? – ShelbyZ 2012-02-24 18:36:15

+0

它是,但我在這裏問的問題基本上是'包括'帶來所有的命令行。我只想要linetype == 1等命令行。 – Allen 2012-02-24 19:44:10

+0

如果有意義的話,您可以考慮給它一個提示:[link](http://forums.silverlight.net/p/190229/438306.aspx)或嘗試將呼叫分成兩個方法,一個用於獲取訂單,另一個用於根據檢索到的訂單獲取訂單行。 – ShelbyZ 2012-02-24 21:42:20

回答

0

您可以手動加入他們的行列:

Orders[] orderlist = (from m in db.Orders 
         join p in db.Orderlines 
         on p.OrderId = m.Id 
         where areas.Contains(m.Area) 
         && m.Branch == branch 
         && (m.OrderStatus == "1" || m.OrderStatus == "4") 
         && m.SpecialInstrs == string.Empty 
         && (p.LineType == "1" || p.LineType == "7") 
         && p.MBomFlag != "C" 
         select m).ToArray();