使用SQL LIKE操作符的LINQ到实体

本文关键字:LINQ 实体 操作符 SQL LIKE 使用 | 更新日期: 2023-09-27 18:18:32

我有这个:

query = query.Where(s => s.ShowTypeDescription == showTypeDescription);
为了构建动态SQL,对不同的变量执行多次

我该如何将上面的内容转换成:

query = query.Where(s => s.ShowTypeDescription **LIKE** showTypeDescription);

?

使用SQL LIKE操作符的LINQ到实体

query = query.Where(s => s.ShowTypeDescription.Contains(showTypeDescription));
   Contains() is translated LIKE '%term%'
   StartsWith() = LIKE 'term%'
   EndsWith()   = LIKE '%term'

如果您想要的只是在另一个字符串中找到子字符串,那么最好的方法是使用Contains方法:

query = query.Where(s => s.ShowTypeDescription.Contains(showTypeDescription));

因为String.Contains方法转换为:

CHARINDEX(ShowTypeDescription, @showTypeDescription) > 0

大致相当于:

ShowTypeDescription LIKE '%' + @showTypeDescription + '%'

Update:在Linq-to-SQL中,您可以使用SqlMethods.Like方法:

query = query.Where(s => SqlMethods.Like(s.ShowTypeDescription, showTypeDescription));

这将直接转换为SQL LIKE操作符。但是,请注意,这在Linq-to-SQL查询之外不起作用。尝试在其他上下文中调用此方法将抛出异常。