Linq to sql Linq2SQL生成Like操作符

Linq to sql Linq2SQL生成Like操作符,linq-to-sql,sql-like,Linq To Sql,Sql Like,我有一个字符串“Word1 Word2”,我想将其转换为一个查询,例如“像“%Word1%Word2%” 目前我有: from t in Test where t.Field.Contains("Word1 Word2") 如何在LINQ2SQL中实现这一点?我需要为此创建两个单独的查询吗?我不能在同一个语句中编写它吗 Thx提前好吧,这将转化为 LIKE "%Word1 Word2%" 这可能不是你想要的。。。如果您这样编写查询: where t.Field.Contains("Word1

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

目前我有:

from t in Test
where t.Field.Contains("Word1 Word2")
如何在LINQ2SQL中实现这一点?我需要为此创建两个单独的查询吗?我不能在同一个语句中编写它吗


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)

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

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

…在客户端进行一些后期筛选,以确保word2位于word1之后。

只有当字段中出现两个单词时,原始的
LIKE
才匹配。虽然其他单词可能是正确的,但我更喜欢此解决方案。这很好,我不知道此方法。如果有人想知道的话,它正是这样生成的:DECLARE@p0varchar(13)SET@p0='%Word1%Word2%'。。。。。其中[t0].[Name]像@p0
from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t