У меня есть строка "Word1 Word2", и я хочу преобразовать его к запросу такой как "Как '%Word1%Word2%'".
В данный момент я имею:
from t in Test
where t.Field.Contains("Word1 Word2")
Как сделать это в LINQ2SQL? Я должен создать два отдельных запроса для этого, разве я не могу записать это в том же операторе?
Заранее спасибо
from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t
В качестве обходного пути, возможно, этого будет достаточно:
from t in Test
where t.Field.Contains("Word1") && t.Field.Contains("Word2")
... с некоторой пост-фильтрацией на стороне клиента, чтобы гарантировать, что слово2 идет после слова1.
Ну, это переводится как
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)