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