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

EF Core中LINQ使用List.Contains查询无结果的用法确认

问题分析与解决方案

你的代码里的Where(e => e.Id.Contains(ids.ToString()))写法完全错误,这是导致功能失效的核心原因:

  • ids是List<string>类型,调用ToString()后得到的不是ID列表的拼接字符串,而是该集合的类型名称(类似System.Collections.Generic.List1[System.String]),用这个字符串去匹配e.Id`,自然找不到任何符合条件的记录。
  • 你实际想要的是筛选出Id存在于ids列表中的数据,正确的写法应该是反过来,用列表的Contains方法判断e.Id是否在列表内:
var spr = this.contextSQL.ProductSubProductRate
                   .Where(e => ids.Contains(e.Id));

EF会自动将这个表达式转换成SQL的IN查询(比如WHERE Id IN ('id1','id2',...)),这才是批量筛选的正确方式。

另外补充两点优化建议:

  • 避免直接用SqlQuery获取当前时间,EF Core可以用DateTime.UtcNow或DateTime.Now(根据数据库时区配置调整),或者用数据库函数,比如EF Core 3.0+可以用EF.Functions.Now()。
  • 如果ids为空,建议提前判断,避免执行无意义的查询。

内容的提问来源于stack exchange,提问作者Vincent Krisna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:07:11