5

我有这个:

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

多次为不同的变量构建动态 SQL。

我将如何将上述内容转换为:

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

?

4

2 回答 2

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

   Contains() is translated LIKE '%term%'
   StartsWith() = LIKE 'term%'
   EndsWith()   = LIKE '%term'
于 2013-06-13T21:53:45.987 回答
5

如果您只想在另一个字符串中查找子字符串,最好的方法是使用以下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));

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

于 2013-06-13T21:53:57.167 回答