Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ从(某列的)字段不等于另一个表的表中检索值_Linq - Fatal编程技术网

LINQ从(某列的)字段不等于另一个表的表中检索值

LINQ从(某列的)字段不等于另一个表的表中检索值,linq,Linq,我有两个共有一列的表,如果第一个表的列的值不等于另一个表的列的值,如何检索第一个表 以下是一个例子: table1ID | foo | fooBool table2ID | foo | fooin ---------------------------- ----------------------------- 1 | test1 | true 1 | test2 | 5

我有两个共有一列的表,如果第一个表的列的值不等于另一个表的列的值,如何检索第一个表

以下是一个例子:

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

     1    |  test1  | true              1     |   test2  |    5
     2    |  test2  | true              2     |   test3  |    7
     3    |  test3  | true
     4    |  test4  | false
因此,对于foo值不等于表2值的第一个表,LINQ查询的结果为:

table1ID | foo    | fooBool
---------------------------    
   1     | test1  | true
   4     | test4  | false
您还可以使用IEnumerable扩展名

var results = db.table1.Intersect(db.table2);
还是在林克

var codes = from intersected in db.table1.Intersect(db.table2)
            select intersected.foo;
var codes = from diff in db.table1.Except(db.table2)
            select diff.foo;
这将产生

 results 
 ----------
 test2
 test3
 results 
 ----------
 test1
 test4
更新

感谢Joe指出,
Intersect
将生成公共项(上面添加了示例)。您需要的是扩展方法

var results = db.table1.Except(db.table2);
还是在林克

var codes = from intersected in db.table1.Intersect(db.table2)
            select intersected.foo;
var codes = from diff in db.table1.Except(db.table2)
            select diff.foo;
这将产生

 results 
 ----------
 test2
 test3
 results 
 ----------
 test1
 test4
您还可以使用IEnumerable扩展名

var results = db.table1.Intersect(db.table2);
还是在林克

var codes = from intersected in db.table1.Intersect(db.table2)
            select intersected.foo;
var codes = from diff in db.table1.Except(db.table2)
            select diff.foo;
这将产生

 results 
 ----------
 test2
 test3
 results 
 ----------
 test1
 test4
更新

感谢Joe指出,
Intersect
将生成公共项(上面添加了示例)。您需要的是扩展方法

var results = db.table1.Except(db.table2);
还是在林克

var codes = from intersected in db.table1.Intersect(db.table2)
            select intersected.foo;
var codes = from diff in db.table1.Except(db.table2)
            select diff.foo;
这将产生

 results 
 ----------
 test2
 test3
 results 
 ----------
 test1
 test4

intersect操作符生成两个序列的集合intersect。这与OP试图实现的目标背道而驰。Except运算符将是此处的合适运算符。好的,是的,尽管您可以使用IEqualityComparer编写一些内容。您还可以编写自己的通用扩展方法,该方法接受谓词进行比较。intersect运算符生成两个序列的intersect集合。这与OP试图实现的目标背道而驰。Except运算符将是此处的合适运算符。好的,是的,尽管您可以使用IEqualityComparer编写一些内容。您还可以编写自己的泛型扩展方法来接受谓词进行比较。