Linq2SQL生成Like运算符

时间:2010-04-13 11:32:58

标签: linq-to-sql sql-like

我有一个字符串“Word1 Word2”,我想将其转换为查询,例如“Like'%Word1%Word2%'”。

目前我有:

from t in Test
where t.Field.Contains("Word1 Word2")

如何在LINQ2SQL中执行此操作?我是否需要为此创建两个单独的查询,我不能在同一语句中编写它吗?

提前谢谢

3 个答案:

答案 0 :(得分:8)

from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t

答案 1 :(得分:0)

那将转化为

LIKE "%Word1 Word2%"

这可能不是你想要的......如果你写这样的查询:

where t.Field.Contains("Word1") && t.Field.Contains("Word2")

它将生成以下SQL:

DECLARE @p0 VarChar(4) SET @p0 = '%ab%'
DECLARE @p1 VarChar(4) SET @p1 = '%cd%'
....
SELECT ...
WHERE ([t0].[Field] LIKE @p0) AND ([t0].[Field] LIKE @p1)

答案 2 :(得分:0)

作为解决方案,也许这就足够了:

from t in Test
where t.Field.Contains("Word1") && t.Field.Contains("Word2")

...在客户端进行一些后期过滤,以确保word2位于word1之后。