按任意顺序匹配所有单词

本文关键字:单词 任意 顺序 | 更新日期: 2023-09-27 18:08:12

如何使用linq匹配每个单词的搜索字符串?即。"apple orange"应该与"orange apple"匹配,而不是"apple orange fred"。

这里的查询可以查找是否有任何单个单词匹配,我无法让它为All()单词匹配工作。

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

这个想法与这个线程非常相似。搜索给定字符串

按任意顺序匹配所有单词

检查每个单词是否存在:

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();