我想用Like运算符编写LINQ to SQL查询,但没有使用WildCard运算符。
我知道以下内容:
包含将与此相同:类似'%b%' StartsWith将与此相当:类似'b%',而EndsWith则相反。
Equals可以做到,但“此方法执行序数(区分大小写和文化不敏感)比较。”
我现在的做法是这样的:
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,但是使用WildCard,这在SQL Server Profiler上明显清晰。
请告诉我。
提前谢谢你。
答案 0 :(得分:0)
您可以使用:
SqlMethods.Like
像:
.Where(s => SqlMethods.Like(s.UserName, userName))
答案 1 :(得分:0)
Equals
执行“序数(区分大小写和文化不敏感)比较”在与Linq to SQL或Entity框架一起使用时不适用,因为该语句将被翻译成SQL。
数据库collation(或设置的列排序规则)将确定如何处理"="
(等于)。