如何编写一些LINQ,排除链接表中的相关记录
本文关键字:记录 链接表 排除 何编写 LINQ | 更新日期: 2023-09-27 18:08:26
我有两个表
Client
ClientReport
我需要写一些LINQ,列出所有不在ClientReport表中的客户端,即我需要列出与特定报告不关联的所有客户端。
这是我的出发点:
var ClientList = db.StdClient.ToList();
许多谢谢。编辑:对不起,我忘记了一个重要的要求,那就是过滤器需要是特定于报告的。reporttid作为参数输入到Action
EDIT2:
var ClientList = db.StdClient
.Where(c => !db.StdClientReport
.Any(cr=>(
(cr.StdClientId == c.Id)
&& (cr.ReportId==ReportId)
)
)
).ToList();
这是假设Client
和ClientReport
之间存在一对多关系,通过Client
上的navigation属性和/或ClientReport
上的ClientId
属性。
如果有从Client
到ClientReport
的导航属性:
var clientList = db.Client.Where(c => !c.ClientReports.Any());
或
int id = 7; // report ID we're looking for
var clientList = db.Client.Where(c => !c.ClientReports
.Any(cr => cr.ReportId == id)
);
如果它特定于一个报告ID。
否则var clientList = db.Client.Where(c => !db.StdClientReport
.Any(cr=>cr.ClientId == c.Id)
);
你也可以使用.Except
,但我还没有测试过它
var noReport = ClientList.Except(ClientReportList);