如何在C# .Net的Where子句中处理ID列表实现多ID查询
解决方案
直接修改两处核心逻辑即可适配ID列表的场景:
- 过滤条件改用
Contains方法:替换原有的单个ID相等判断,用列表的Contains来匹配实体ID是否在目标列表中。 - Select中绑定实体自身的Id:原代码里硬传的
xxxId要换成t.Id,确保每个结果对应自身的实体ID。
修改后的完整代码示例:
// 假设传入的ID列表参数名为xxxIds,类型根据实际ID类型调整(比如IEnumerable<int>/IEnumerable<Guid>) using (var context = _contextFactory.CreateDbContext()) { return await context .Xxxx .AsNoTracking() // 注:EF Core官方无SetTracking方法,若为自定义扩展方法可保留原写法 .Where(t => xxxIds.Contains(t.Id)) .Select(t => new ResultsByIdSqlModel( t.Id, // 替换原固定xxxId,使用实体自身的Id t.Name, t.SessionId, // 其他字段保持原有写法 )) .ToListAsync(); // 返回集合类型,对应Task<List<ResultsByIdSqlModel>>返回值 }
额外注意事项:
- 确保传入的
xxxIds不为空且无重复值,避免无效查询或重复结果。 - 返回类型需从原单个实体类型(如
Task<ResultsByIdSqlModel>)改为集合类型(如Task<List<ResultsByIdSqlModel>>)。
内容的提问来源于stack exchange,提问作者NewCSharp
相关产品推荐
相关产品推荐

