Linq2SQL создаст оператор Like - PullRequest
       10

Linq2SQL создаст оператор Like

7 голосов
/ 13 апреля 2010

У меня есть строка "Word1 Word2", и я хочу преобразовать ее в запрос, такой как "Как"% Word1% Word2% '".

На данный момент у меня есть:

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

Как это сделать в LINQ2SQL? Мне нужно создать два отдельных запроса для этого, я не могу написать это в одном и том же утверждении?

Спасибо заранее

Ответы [ 3 ]

8 голосов
/ 13 апреля 2010
from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t
0 голосов
/ 13 апреля 2010

В качестве обходного пути, может быть, этого будет достаточно:

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

... с некоторой пост-фильтрацией на стороне клиента, чтобы гарантировать, что слово2 идет после слова1.

0 голосов
/ 13 апреля 2010

Хорошо, это переведет на

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)
...