如何在C# Entity Framework中用LIKE '5%'替代Contains查询?
解决方案
要实现SQL中LIKE '5%'的匹配效果(仅获取以指定字符开头的记录),可以用以下两种方式:
方式一:使用LINQ的StartsWith方法
这是最直观的写法,EF会自动将其转换为对应的LIKE '前缀%' SQL语句,完全符合你的需求:
string passedValue = "5"; results = db.procedure1 .Where(c => c.User.StartsWith(passedValue)) .OrderBy(o => o.User).ToList();
方式二:显式调用SQL LIKE函数(EF Core适用)
如果需要更灵活的匹配模式,可以直接使用EF Core提供的EF.Functions.Like方法:
string pattern = "5%"; results = db.procedure1 .Where(c => EF.Functions.Like(c.User, pattern)) .OrderBy(o => o.User).ToList();
关键说明
- 你之前用的
Contains方法会被EF转换为WHERE User LIKE '%5%',所以会匹配所有包含"5"的字符串,这就是结果包含05621、58763、98599的原因。 StartsWith对应的SQL逻辑是WHERE User LIKE '5%',只会匹配以"5"开头的记录,最终只会返回58763。
内容的提问来源于stack exchange,提问作者Jonathan Small
相关产品推荐
相关产品推荐

