如何在LINQ中从逗号分隔字符串精确匹配数字
精确匹配逗号分隔错误码的LINQ解决方案
直接给你几种可行的实现方式,解决Contains误匹配的问题:
方法一:给目标数字加边界匹配
把原错误码字符串前后都补逗号,再匹配带逗号的目标数字,彻底避免部分数值的误判:string target = ErrorTypetxt; List<TableModel> result = dbContext.Example .Where(dn => ("," + dn.ErrorType + ",").Contains("," + target + ",")) .ToList();这种写法会被EF转换成数据库层面的字符串拼接与包含判断,比如SQL Server里会生成
CHARINDEX(',7,', ',' + ErrorType + ',') > 0的语句,精准匹配独立的数字项。方法二:使用EF的Like函数覆盖全场景
通过多个Like条件组合,覆盖目标数字在开头、中间、结尾以及单独存在的情况:string target = ErrorTypetxt; List<TableModel> result = dbContext.Example .Where(dn => EF.Functions.Like(dn.ErrorType, $"{target},%") // 数字在开头 || EF.Functions.Like(dn.ErrorType, $"%{target}") // 数字在结尾 || EF.Functions.Like(dn.ErrorType, $"%{target},%") // 数字在中间 || dn.ErrorType == target) // 仅包含该数字 .ToList();方法三:拆分字符串匹配(EF Core 3.0+适用)
如果用的是EF Core 3.0及以上版本,直接拆分错误码字符串后判断是否包含目标:string target = ErrorTypetxt; List<TableModel> result = dbContext.Example .Where(dn => dn.ErrorType.Split(',').Contains(target)) .ToList();注意:这种方式依赖数据库的字符串拆分函数支持,比如SQL Server 2016及以上版本的
STRING_SPLIT。
内容的提问来源于stack exchange,提问作者Rushi
相关产品推荐
相关产品推荐

