我有一個字符串「Word1 Word2」,我想將它轉換爲查詢,如「Like'%Word1%Word2%'」。Linq2SQL生成Like運算符
目前我有:
from t in Test
where t.Field.Contains("Word1 Word2")
如何LINQ2SQL做到這一點?我是否需要爲此創建兩個單獨的查詢,我不能將它寫在同一個語句中嗎?
提前
我有一個字符串「Word1 Word2」,我想將它轉換爲查詢,如「Like'%Word1%Word2%'」。Linq2SQL生成Like運算符
目前我有:
from t in Test
where t.Field.Contains("Word1 Word2")
如何LINQ2SQL做到這一點?我是否需要爲此創建兩個單獨的查詢,我不能將它寫在同一個語句中嗎?
提前
from t in Test
where SqlMethods.Like(t.Field, "%Word1%Word2%")
select t
那麼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)
原來的'LIKE'只有當兩個單詞出現在字段中時才匹配。 – 2010-04-13 11:38:33
啊是的,真的......編輯。 – 2010-04-13 11:41:42
作爲變通,這也許就足夠了:
from t in Test
where t.Field.Contains("Word1") && t.Field.Contains("Word2")
...與客戶端上的一些過濾後,以確保WORD2來WORD1後。
儘管其他人可能是正確的,但我更喜歡這種解決方案。 – Dante 2010-04-13 11:44:46
這很好,不知道這種方法。如果有人想知道: DECLARE @ p0 VarChar(13)SET @ p0 ='%Word1%Word2%'..... WHERE [t0]。[Name] LIKE @ p0 – 2010-04-13 11:54:24