按任意顺序匹配所有单词

时间:2013-04-08 22:51:33

标签: c# linq

如何使用linq匹配每个单词的搜索字符串?即“苹果橙”应与“橙苹果”匹配,但不能与“苹果橙”相匹配。

此查询可用于查找是否有任何单词匹配,我无法使其适用于All()匹配的单词。

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

这个想法非常类似于这个主题。 Word-wise super string search for given string

1 个答案:

答案 0 :(得分: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();