我有两个共同有一个列的表,如何检索第一个表,其列的值不等于另一个表的列的值?
以下是一个例子:
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
答案 0 :(得分:3)
var results = from t1 in db.table1
from t2 in db.table2
where t1.foo != t2.foo
select t1
答案 1 :(得分:2)
您还可以使用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
<强>更新强>
感谢Joe指出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