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

C# EF查询中如何判断字符串是否存在于List<string>类型参数列表内

解决方案

分两种常用场景实现对应的筛选逻辑:

场景1:精准匹配(Neighborhood字段值完全等于列表中任意一项)

这是最常用的场景,对应SQL的IN查询,把判断逻辑反过来,用入参列表调用Contains方法判断是否包含当前行的字段值即可:

.WhereIf(input.Neighborhoods != null, x => input.Neighborhoods.Contains(x.Neighborhood))

EF/EF Core 会自动将这段逻辑翻译为Neighborhood IN ('xxx','yyy',...)的SQL语句,性能和兼容性都有保证。
如果需要避免传入空列表时出现无意义筛选,可以把判断条件优化为:

.WhereIf(input.Neighborhoods != null && input.Neighborhoods.Any(), x => input.Neighborhoods.Contains(x.Neighborhood))

场景2:模糊匹配(Neighborhood字段值包含列表中任意一项作为子串)

如果你需要的是模糊匹配,只要Neighborhood字段包含列表里任意一个子串就算符合条件,可以这么写:

.WhereIf(input.Neighborhoods?.Any() == true, x => input.Neighborhoods.Any(n => x.Neighborhood.Contains(n)))

内容的提问来源于stack exchange,提问作者Eugene Sukh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:01