[英]LINQ Like Clause - Without Wildcard operator
我想使用Like运算符编写LINQ to SQL查询,但不使用WildCard运算符。
我知道以下几点:
包含将与此等价:类似'%b%'的StartsWith将与此等价:一个类似'b%'和EndsWith将相反。
等于可以做到,但是“此方法执行顺序(区分大小写和对文化不敏感)的比较。”
我现在的工作方式是这样的:
var loc = (from l in data.Locations.OrderBy(l => l.LocationName)
join s in data.LocationSecurities.Where(s=> s.UserName.ToLower().Equals(userName.ToLower())) on l.LocationID equals s.LocationId
select new
{
LocationId = l.LocationID,
Name = l.LocationName
}
).Distinct().ToList();
但这只是一个变通方法,因为我想做的就是简单地使用“ Like”的等价物,但忽略通配符,这在SQL Server Profiler上显而易见。
请告诉我。
先感谢您。
您可以使用:
SqlMethods.Like
喜欢:
.Where(s => SqlMethods.Like(s.UserName, userName))
当与Linq to SQL或Entity Framework一起使用时, Equals
执行“常规(区分大小写和对文化不敏感)比较”的情况不适用,因为该语句将转换为SQL。
数据库排序规则 (或设置为列排序规则)将确定如何处理"="
(等于)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.