私はすべての名前プロパティを持つベンダのC#にリストを持っています。私はユーザーが名前を検索してそのリストをフィルタリングできるようにしたい。フィルタ文字列は、部分一致または完全一致にすることができます。ただし、結果リストに完全一致が含まれている場合は、リスト内の位置が0で、その後の部分一致がすべて含まれている必要があります。リストの最初の特定の要素を持つリストのサブセットを選択
linqとlambdaを使ってサブリストを取得するのはかなり簡単ですが、正確に一致するものがあればそれを追加してから、残りの部分を追加するというハックに頼らざるを得ません正確なものそれは優しくないと感じます。簡単な方法がありますか?私の現在のコード(それはコンパイルできませんので、メモリから実行):Levenshtein距離を計算StringComparerの開発について
List<Vendor> temp = vendors.Where(v => v.Name.ToUpper().Contains(vendorNameSearch)).ToList();
Vendor exactMatch = vendors.Single(v => v.Name.ToUpper().Equals(vendorNameSearch));
if(null == exactMatch){return temp;}
else
{
List<Vendor> temp1 = new List<Vendor>();
temp1.Add(exactMatch);
temp1.AddRange(temp.Remove(exactMatch));
return temp1;
}