Linq 有没有一种简单的方法来获取多对多关系的子集?
我有一段感情 Order1=>ItemMany=>distribtuionMany=>recipientsMany 是否有一种有效的方法使用linq到实体EF4来获取: a订单的所有收件人? B 收件人的所有项目 顺序 这是我的解决方案当前的解决方案:Linq 有没有一种简单的方法来获取多对多关系的子集?,linq,entity-framework,entity-framework-4,linq-to-entities,Linq,Entity Framework,Entity Framework 4,Linq To Entities,我有一段感情 Order1=>ItemMany=>distribtuionMany=>recipientsMany 是否有一种有效的方法使用linq到实体EF4来获取: a订单的所有收件人? B 收件人的所有项目 顺序 这是我的解决方案当前的解决方案: List<Distribution> distributions = new List<Distribution>(); List<Recipient> recipients = new List&
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);
}
}
我认为应该有一种方法可以通过一个linq查询获取Order.Orderitems.Distribution.Recipients,但可能我错了。您可以使用双向属性执行以下操作:
IEnumerable<Recipient> orderRecipients =
Entities.Recipients.Where(r => r.Distribution.Item.OrderID == OrderID);
根据您的实际实体名称和外键,b也有类似的情况。我也在想同样的事情,但当我去编码它时,这些子集并不存在。您需要一个外键链接数据库中的表,并在您的数据库中选择“从数据库更新模型”时选中“在模型中包含外键列”复选框edmx模型。该表存在,但EF4将其隐藏。