是否有一种简单的方法来获得多对多关系的子集?

时间:2011-06-28 13:36:19

标签: linq entity-framework entity-framework-4 linq-to-entities

我有一段感情 订单(1)=>项(许多)=> distribtuion(很多)=>收件人(许多)

使用linq实体(EF4)是否有一种高效的方法来获得:

  • a)订单的所有收件人?
  • b)中 收件人的所有项目 订单?

这是我目前的解决方案:

   List<Distribution> distributions = new List<Distribution>();
   List<Recipient> recipients = new List<Recipient>();
    foreach (OrderItem oi in  order.OrderItems)
                {
                    foreach (Distribution d in oi.Distributions)
                        if (!distributions.Contains(d))
                        {
                            distributions.Add(d);
                            foreach (Recipient r in d.Recipients)
                                if (!recipients.Contains(r))
                                    recipients.Add(r);
                        }

                }

我在想我应该有办法让Order.Orderitems.Distribution.Recipients获得一个linq查询,但也许我错了。

1 个答案:

答案 0 :(得分:-1)

您可以使用双向属性执行以下操作:

IEnumerable<Recipient> orderRecipients = 
    Entities.Recipients.Where(r => r.Distribution.Item.OrderID == OrderID);

与(b)类似,取决于您的实际实体名称和外键。