Linq объединить с внутренней коллекцией - PullRequest
2 голосов
/ 23 марта 2010

Я пытаюсь выполнить запрос LINQ to Object для 2 коллекций

  1. Customer.Orders
  2. Branches.Pending.Orders (Коллекция в коллекции)

Я хочу вывести каждую ветвь, которая еще не доставила какой-либо заказ клиента.

var match = from order in customer.Orders 
    join branch in Branches 
    on order equals branch.Pending.Orders 
    select branch;

Это не работает, я получаю: Тип одного из выражений в предложении соединения неверен.Ошибка вывода типа при вызове 'GroupJoin'.

По моему поиску, я думаю, это потому, что Order или набор Orders не реализуют равные.

Если этот запрос сработал, он все равно будет работатьошибаться, так как он вернет ветку, если клиент и отложенные ордера точно совпадают.Я хочу получить результат, если какой-либо порядок соответствует.

Я изучаю Linq и ищу подход к решению таких проблем, а не само решение.

Я бы сделал это вSQL вроде этого;

SELECT b.branch_name from Customers c, Branches b, Orders o
WHERE c.customer_id = o.customer_id
  AND o.branch_id = b.branch_id
  AND c.customer_id = 'my customer'
  AND o.order_status = 'pending'

1 Ответ

0 голосов
/ 23 марта 2010

Глядя на свой Linq, вы хотите что-то вроде этого

var match = 
   from o in customer.Orders 
   from b in Branches 
   where b.Pending.Orders.FirstOrDefault(p => o.order_id == p.order_id) != null
   select b;
...