如何使用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 { ... };