Есть ли простой способ получить подмножество для отношений многих ко многим? - PullRequest
0 голосов
/ 28 июня 2011

У меня есть отношения Заказ (1) => Товар (Многие) => Распределение (Многие) => Получатели (Многие)

Существует ли эффективный способ использования linq для сущностей (EF4) для получения:

  • а) всех получателей заказа?
  • б) все предметы для получателя для заказ?

Это моё текущее решение для:

   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 голосов
/ 28 июня 2011

Вы можете использовать свойства 2 way, чтобы сделать что-то вроде этого:

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

с аналогичной вещью для (b) в зависимости от ваших реальных имен сущностей и внешних ключей.

...