2013-04-08 65 views
1

如何使用linq匹配每個單詞的搜索字符串?即「蘋果橙」應與「橙色蘋果」相匹配,但不適用「蘋果橙色」。以任意順序匹配所有單詞

此查詢在此查找是否有單個單詞匹配,但無法使其匹配All()單詞。

var match = "apple orange pear".Split() 
     .Intersect("orange pear fred".Split()) 
     .Any(); 

這個想法與這個主題非常相似。 Word-wise super string search for given string

+0

「橙色蘋果」是否匹配「橙色」?那麼「蘋果蘋果」呢? – 2013-04-09 00:17:25

回答

1

檢查在檢查列表中存在的每個單詞:

var words = "orange pear fred".Split(); 
var wordsToCheck = "apple orange".Split(); 
var match = words.All(w => wordsToCheck.Contains(w)); 

或產生兩個序列的差異。如果沒有差異元素,則所有單詞都在檢查列表中:

var match = !words.Except(wordsToCheck).Any(); 
+1

謝謝,使用.Except()在這種情況下適用於我。 – John 2013-04-08 23:07:51