在实体框架(在单个查询中)中,我如何传递 ID 列表并过滤表中没有任何匹配记录的 ID? (从传递的Id列表中检索没有任何记录的Id)
例如,在公司拥有多个资产的情况下,当我收到错误消息时,我可以执行类似的操作来检查特定公司是否没有资产。
await _dbContext.Assets.AnyAsync(a => a.CompanyId == companyId);
只是尝试从给定列表中进行过滤。例如,资产表包含 companyId 100 和 102 的记录。如果我使用以下列表执行 SQL“IN”,只是想获取在资产表中没有任何记录的 Id 101 和 103?
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()
首先根据列表中传递的公司 ID 过滤公司列表。 那么,
Where(c => !_dbContext.Assets.Any(a => a.CompanyId == c.CompanyId))
使用此功能,我们确保只选择资产表中没有任何匹配记录的公司。