LINQ извлекает значения из таблицы, из которых поля (определенного столбца) не равны другой таблице

У меня есть две таблицы, которые имеют общий столбец, как я могу получить первую таблицу, где значения ее столбца не равны значениям столбца другой таблицы?

Вот пример:

  table1ID | foo    | fooBool        table2ID | foo      | fooin
 ----------------------------        -----------------------------

     1    |  test1  | true              1     |   test2  |    5
     2    |  test2  | true              2     |   test3  |    7
     3    |  test3  | true
     4    |  test4  | false

Поэтому результат запроса LINQ для первой таблицы, у которой значения foo не равны таковым для table2:

table1ID | foo    | fooBool
---------------------------    
   1     | test1  | true
   4     | test4  | false

2 ответа

Решение
var results = from t1 in db.table1
              from t2 in db.table2
              where t1.foo != t2.foo
              select t1

Вы также можете использовать Intersect() IEnumerable Extension

var results = db.table1.Intersect(db.table2);

Или в LINQ

var codes = from intersected in db.table1.Intersect(db.table2)
            select intersected.foo;

Это произведет

 results 
 ----------
 test2
 test3

Обновить

Спасибо Джо за указание на то, что Intersect будет производить общие предметы (образец выше). То, что вы хотели бы, это Except метод расширения.

var results = db.table1.Except(db.table2);

Или в LINQ

var codes = from diff in db.table1.Except(db.table2)
            select diff.foo;

Это произведет

 results 
 ----------
 test1
 test4
Другие вопросы по тегам