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)
});
尝试这样做来实现你的目标,没有连接,只需获取表中不包含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();