如何使用LINQ实现左排除JOIN?

如何使用LINQ实现左排除JOIN?

在SQL中 :

SELECT  FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key WHERE B.Key IS NULL 

LEFT JOIN需要DefaultIfEmpty() ,然后可以检查连接值是否为null

 var result = from a in Table_A join b in Table_B on a.Key equals b.Key into j from b in j.DefaultIfEmpty() where b == null select new { ... }; 

更容易写这样:

 var result = from a in Table_A where !Table_B.Any(b => b.Key == a.key) select new { ... }; 

更快的方式

 var result = from a in Table_A where !Table_B.Select(b => b.Key).Contains(a.Key) select new { ... };