我试过了
db.Table1.GroupJoin(db.Table2,
t1 => t1.Id,
t2 => t2.t1Id,
(t1,g) => new { t1, g })
.Where(item => !item.g.Any())
.Select(item => item.t1);
但它返回0结果.我正在尝试编写生成以下SQL代码(或类似内容)的内容
SELECT t1.*
FROM Table1 as t1
LEFT OUTER JOIN Table2 as t2
ON t1.Id = t2.t1Id
WHERE IsNull(t2.Id);
解决方法:
看起来您想要的结果是识别Table1中与Table2在左外连接期间没有结果的项目.
用流利的表示法,方法与此类似:
var query = db.Table1.GroupJoin(db.Table2,
t1 => t1.Id,
t2 => t2.t1Id,
(t1, joined) => new { t1, joined }
)
.SelectMany(r => r.joined.DefaultIfEmpty(), (r, j) => new
{
r.t1,
j
})
.Where(r => r.j == null)
.Select(r => r.t1);
在查询语法中:
var query = from t1 in db.Table1
join t2 in db.Table2 on t1.Id equals t2.t1Id into joined
from j in joined.DefaultIfEmpty()
where j == null
select t1;
原文地址:https://codeday.me/bug/20190630/1338726.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。