簡體   English   中英

如何使用 DbLinq 和 SQLite 進行左外連接?

[英]How to do left outer joins with DbLinq and SQLite?

我試過了

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM