ずつリストをソートするときに、次のように私は(これは単純化した例である)二つのリストを持って働いていない比較子をデフォルト:C#の - 予想通り、別の
void SortOneListByAnother<T1, T2>(List<T1> dataList, List<T2> sortList)
where T1 : IComparable
where T2 : IComparable
{
dataList.Sort((a, b) => sortList[dataList.IndexOf(a)].CompareTo(sortList[dataList.IndexOf(b)]));
}
:
var dataList = new List<char>{ 'a', 'b', 'c', 'd', 'e', 'f' };
var sortList = new List<int>{ 6, 5, 4, 3, 2, 1 };
は、ここに私のソート方法は次のようになります。
この sortlistがありソートされているのと同じ方法でソートされたデータリスト(文字のリスト)(この場合には、逆の順序)を、返す必要がありますすなわち:
{ 'f', 'e', 'd', 'c', 'b', 'a' }
代わりに、私のコードはリストの最初と最後の要素を無視しているように見えます。だから私は得ている:
{ 'a', 'e', 'd', 'c', 'b', 'f' }
私はおそらく何が間違っていることができますか?
配列とリストには、0から始まるインデックスが付けられています。代わりに、sortList = new List {5、4,3,2,1,0} –
YSharp
リストの最初の要素はインデックス0でインデックス1ではないことを覚えておいてください。 –
サイドノートでは、ソート方法かなり非効率的です。 – CSharpie