我编写了一个扩展方法来尝试计算出现在描述中的字符串中的单词。这是功能(例如,搜索“软”我想看到微软,所以称它为关键字可能不正确,但我想提前沟通。关键字只是当时唯一想到的东西) :
public static int KeywordCount(this string str, string Phrase)
{
string[] elements = Phrase.ToUpper().Split(' ');
int count = 0;
foreach (string element in elements)
{
if (str.ToUpper().Contains(element))
count++;
}
return count;
}
我试图然后通过一个项目列表并仅包括至少有一些命中的项目,但还根据命中数对其进行排序(如果所有关键字都在描述中,它需要位于顶部并且等等。
到目前为止,我所拥有的是:
selection.AddRange(all.Where(c => c.Description.KeywordCount(query) > 0));
然后如何根据 KeywordCount 的返回值进行排序?我也有一种感觉,我要去的方向将导致对所有项目进行 KeywordCount 搜索 1 次,对于计数 > 0 的项目进行 1 次额外搜索,所以如果有办法同时进行比较和排序,我想知道怎么做。