2013-04-08 48 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

相关问题