【问题标题】:linq to entities nested select filloutlinq 到实体嵌套选择填写
【发布时间】:2012-02-24 18:08:23
【问题描述】:

我正在尝试在 linq to entity 查询中返回结果和嵌套结果。

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 的订单行。

我该怎么做?

Orders 和 OrderList 都是 L2E 和 poco 实体生成器生成的 POCO 实体。

【问题讨论】:

  • OrderLines 在 Orders 实体上是否不可用作为您可以检查的 NavigationProperty?
  • 是的,但我在这里问的问题基本上是“包含”带来了所有的订单。我只想要具有 linetype==1 等的订单线。
  • 如果有意义,您可能会考虑试一试:link 或尝试将调用拆分为两种方法,一种用于获取订单,另一种用于根据检索到的订单获取您的 OrderLines。
  • 如果我将它分成两个调用,它已经可以正常工作了。我正在尝试在这里学习一些 LINQ,看看这是否可以在一次调用中完成。 :)

标签: c# linq entity-framework linq-to-entities


【解决方案1】:

您可以手动加入他们:

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    相关资源
    最近更新 更多