使用SQL LIKE运算符的LINQ to Entities
我有这个:
query = query.Where(s => s.ShowTypeDescription == showTypeDescription);
为了构建动态SQL,为了不同的变量多次。
我将如何改变以上内容来说:
query = query.Where(s => s.ShowTypeDescription **LIKE** showTypeDescription);
?
如果你想要的只是在另一个字符串中找到一个子字符串,最好的方法是使用Contains
方法:
query = query.Where(s => s.ShowTypeDescription.Contains(showTypeDescription));
因为String.Contains
方法转换为:
CHARINDEX(ShowTypeDescription, @showTypeDescription) > 0
这大致相当于:
ShowTypeDescription LIKE '%' + @showTypeDescription + '%'
更新:在Linq-to-SQL中,您可以使用SqlMethods.Like
方法:
query = query.Where(s => SqlMethods.Like(s.ShowTypeDescription, showTypeDescription));
这将直接转换为SQL LIKE
运算符。 但请注意,这不适用于Linq-to-SQL查询之外。 尝试在其他上下文中调用此方法将引发exception。
query = query.Where(s => s.ShowTypeDescription.Contains(showTypeDescription)); Contains() is translated LIKE '%term%' StartsWith() = LIKE 'term%' EndsWith() = LIKE '%term'