Левое внешнее соединение в Linq - PullRequest
2 голосов
/ 13 апреля 2011

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

У меня есть 2 списка: левый и правый. Мне нужно выбрать все элементы слева, которые не справа.

List<T> left = GetLeft();
List<T> right = GetRight();

IEnumerable result = // Have no idea

Как мне это сделать?

Ответы [ 2 ]

7 голосов
/ 13 апреля 2011

Это совсем не похоже на объединение ... звучит как:

var result = left.Except(right);
1 голос
/ 06 сентября 2011

Вот решение, которое я нашел.

Найти всех клиентов без покупок:

SQL:

   Select c.Name from Customers c             
   Left Outer Join Purchases p on c.customerid=p.customerid 
   where p.price is null

LINQ:

   from c in Customers
   join p in Purchases on c.customerid=p.customerid into custPurchases
   from cp in custPurchases.DefaultIfEmpty()
   where cp==null
   select new
   {
   cc.Name
   }
...