Нужна помощь с запросом, противоположным внутреннему соединению, с использованием LINQ

У меня есть две таблицы в наборе данных XML. Т1, Т2. В каждой из таблиц есть столбец идентификаторов.

T1 имеет список клиентов T2 имеет список заказов

Я хочу создать запрос LINQ, который возвращает только идентификаторы клиентов, у которых нет заказов. Другими словами, идентификаторы клиентов, которых нет в таблице T2.

О да, я использую C #

Спасибо!


person Rick    schedule 09.03.2009    source источник


Ответы (3)


Я думаю, это сработает (пожалуйста, адаптируйте к своим DataSets):

var query = from c in T1
            where !(from o in T2 select o.CustomerID)
            .Contains(c.CustomerID)
            select c;
person bruno conde    schedule 09.03.2009
comment
Вау - это было просто! Спасибо за помощь - person Rick; 09.03.2009

Для этого требуется внешнее соединение и проверка нуля.

var result = from c in Customers
             join d in Details on d.CustomerID equals c.ID into g
             where !g.Any()
             select c;
person Muhammad Hasan Khan    schedule 09.03.2009

Вам просто нужно добавить предложение where и все:

T1.Where( item1 => T2.All( item2 => item1.ID != item2.ID ) );
person bstoney    schedule 09.03.2009