Linq to sql Linq2SQL生成Like操作符
我有一个字符串“Word1 Word2”,我想将其转换为一个查询,例如“像“%Word1%Word2%” 目前我有: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
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