2012-02-24 77 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();