实体框架过滤与给定表中任何记录都不匹配的Id

问题描述 投票:0回答:1

在实体框架(在单个查询中)中,我如何传递 ID 列表并过滤表中没有任何匹配记录的 ID? (从传递的Id列表中检索没有任何记录的Id)

例如,在公司拥有多个资产的情况下,当我收到错误消息时,我可以执行类似的操作来检查特定公司是否没有资产。

await _dbContext.Assets.AnyAsync(a => a.CompanyId == companyId);

只是尝试从给定列表中进行过滤。例如,资产表包含 companyId 100102 的记录。如果我使用以下列表执行 SQL“IN”,只是想获取在资产表中没有任何记录的 Id 101103

List<int> companyIds = new List<int> { 100, 101, 102, 103 };

await _dbContext.Assets.Include(a => a.Company)
            .Where(a => !companyIds.Contains(a.Company.CompanyId))
            .Select(a => a.Company).ToListAsync()
c# .net sql-server entity-framework entity-framework-core
1个回答
0
投票

首先根据列表中传递的公司 ID 过滤公司列表。 那么,

Where(c => !_dbContext.Assets.Any(a => a.CompanyId == c.CompanyId))

使用此功能,我们确保只选择资产表中没有任何匹配记录的公司。

© www.soinside.com 2019 - 2024. All rights reserved.