我有一个字符串“Word1 Word2”,我想将它转换为查询,如“Like'%Word1%Word2%'”。Linq2SQL生成Like运算符
目前我有:
from t in Test
where t.Field.Contains("Word1 Word2")
如何LINQ2SQL做到这一点?我是否需要为此创建两个单独的查询,我不能将它写在同一个语句中吗?
提前
我有一个字符串“Word1 Word2”,我想将它转换为查询,如“Like'%Word1%Word2%'”。Linq2SQL生成Like运算符
目前我有:
from t in Test
where t.Field.Contains("Word1 Word2")
如何LINQ2SQL做到这一点?我是否需要为此创建两个单独的查询,我不能将它写在同一个语句中吗?
提前
from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t
那么THX会转化为
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)
原来的'LIKE'只有当两个单词出现在字段中时才匹配。 – 2010-04-13 11:38:33
啊是的,真的......编辑。 – 2010-04-13 11:41:42
作为变通,这也许就足够了:
from t in Test
where t.Field.Contains("Word1") && t.Field.Contains("Word2")
...与客户端上的一些过滤后,以确保WORD2来WORD1后。
尽管其他人可能是正确的,但我更喜欢这种解决方案。 – Dante 2010-04-13 11:44:46
这很好,不知道这种方法。如果有人想知道: DECLARE @ p0 VarChar(13)SET @ p0 ='%Word1%Word2%'..... WHERE [t0]。[Name] LIKE @ p0 – 2010-04-13 11:54:24