2010-04-13 114 views
7

我有一個字符串「Word1 Word2」,我想將它轉換爲查詢,如「Like'%Word1%Word2%'」。Linq2SQL生成Like運算符

目前我有:

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

如何LINQ2SQL做到這一點?我是否需要爲此創建兩個單獨的查詢,我不能將它寫在同一個語句中嗎?

提前

回答

8
from t in Test 
where SqlMethods.Like(t.Field, "%Word1%Word2%") 
select t 
+0

儘管其他人可能是正確的,但我更喜歡這種解決方案。 – Dante 2010-04-13 11:44:46

+0

這很好,不知道這種方法。如果有人想知道: DECLARE @ p0 VarChar(13)SET @ p0 ='%Word1%Word2%'..... WHERE [t0]。[Name] LIKE @ p0 – 2010-04-13 11:54:24

0

那麼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) 
+0

原來的'LIKE'只有當兩個單詞出現在字段中時才匹配。 – 2010-04-13 11:38:33

+0

啊是的,真的......編輯。 – 2010-04-13 11:41:42

0

作爲變通,這也許就足夠了:

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

...與客戶端上的一些過濾後,以確保WORD2來WORD1後。