You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# .Net的Where子句中处理ID列表实现多ID查询

解决方案

直接修改两处核心逻辑即可适配ID列表的场景:

  1. 过滤条件改用Contains方法:替换原有的单个ID相等判断,用列表的Contains来匹配实体ID是否在目标列表中。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:50:43