首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DbLinq和SQLite进行左外部连接?

如何使用DbLinq和SQLite进行左外部连接?
EN

Stack Overflow用户
提问于 2011-06-02 03:24:35
回答 1查看 750关注 0票数 4

我试过了

代码语言:javascript
复制
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代码(或类似代码)的代码。

代码语言:javascript
复制
SELECT t1.*
FROM Table1 as t1
LEFT OUTER JOIN Table2 as t2
ON t1.Id = t2.t1Id
WHERE IsNull(t2.Id);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-05 04:42:27

看起来您想要的结果是标识Table1中在与Table2的左外部联接期间没有结果的项。

在fluent表示法中,该方法类似于:

代码语言:javascript
复制
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);

在查询语法中:

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6206546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档