Linq to SQL |获取不存在外键的所有记录

本文关键字:记录 不存在 to SQL 获取 Linq | 更新日期: 2023-09-27 18:35:42

我有 2 个表:

Schools
-------
pk_school_id,
title

Business_Hours
--------------
pk_id,
fk_school_id

我想要学校表中pk_school_id和标题,用于表中不存在的所有pk_school_id fk_school_id Business_Hours。

var Schools = (from b in Db.Language_School_Business_Hours
    join s in Db.Language_Schools on b.fk_school_id equals s.pk_school_id into lrs
    from lr in lrs.DefaultIfEmpty()
    select new
    {
       LeftID = b.fk_school_id,
       RightId = ((b.fk_school_id == lr.pk_school_id) ? lr.pk_school_id : 0)
    });

Linq to SQL |获取不存在外键的所有记录

尝试这样做来实现你的目标,没有连接,只需获取表中不包含Business_Hours

元素
   var Schools = Db.Language_Schools
   .Where(s => !Db.Language_School_Business_Hours
   .Select(b => b.fk_school_id).ToList().Contains(s.pk_school_id))
   .Select(x => new
    {
        x.pk_school_id,
        x.school_title
   });
我认为

我们可以通过在第一个.Select(...)之后删除.ToList()来简化linq,删除最后一个.Select(...)。请看下面的代码。

var schools = Db.Language_Schools
              .Where(w => !Db.Language_School_Business_Hours
              .Select(s => s.fk_school_id)
              .Contains(w.pk_school_id))
              .ToList();