0
私は類似比較に基づいて検索結果のリストを並べ替えるカスタム比較者を作成しようとしています。私は入力された検索語のような言葉がリストの最初に表示され、その後に検索フレーズで始まるフレーズ、アルファオーダーの他のすべての値が続きます。パラメータに対するCustom Comparerが失敗しました
このテストコードを考える:私は、この比較子を使用しようとしている
string searchTerm = "fleas";
List<string> list = new List<string>
{
"cat fleas",
"dog fleas",
"advantage fleas",
"my cat has fleas",
"fleas",
"fleas on my cat"
};
を: '私の猫がノミを持っている' に
public class MatchComparer : IComparer<string>
{
private readonly string _searchTerm;
public MatchComparer(string searchTerm)
{
_searchTerm = searchTerm;
}
public int Compare(string x, string y)
{
if (x.Equals(_searchTerm) ||
y.Equals(_searchTerm))
return 0;
if (x.StartsWith(_searchTerm) ||
y.StartsWith(_searchTerm))
return 0;
if (x.Contains(_searchTerm))
return 1;
if (y.Contains(_searchTerm))
return 1;
return x.CompareTo(y);
}
ははlist.sort(新しいMatchComparer(検索語)の結果を呼び出します
私はここで何か奇妙な/奇妙なことをしているに違いないと思う。ここに何か間違っているか、私がやろうとしていることに対してより良いアプローチがあるのだろうか?
ありがとうございます!
素晴らしい!それはうまくいくようです。ありがとう! – duckus