Comparer<T>
オブジェクトのセットをソートする目的でを作成する場合、それを「反転」して別の方向にソートできるようにする簡単な方法はありますか? Comparer<T>
または、Compare メソッドのテストを入れ替えて2 番目を定義する必要がありますか?
質問する
508 次
3 に答える
5
public class ReverseComparer<T> : Comparer<T>
{
private Comparer<T> inputComparer;
public ReverseComparer(Comparer<T> inputComparer)
{
this.inputComparer = inputComparer;
}
public override int Compare(T x, T y)
{
return inputComparer.Compare(y, x);
}
}
これにより、次のようなことができます。
list.Sort(new ReverseComparer(someOtherComparer));
于 2012-05-10T17:59:33.363 に答える
4
これは効率的なコードではありませんが、Reverse
並べ替え後に次のように使用できますComparer<T>
。
var ordered = theList.Sort(new FooComparer()).Reverse();
質問にタグを付けるのでと.Net4
を使用できるので、1つも必要ありません...LINQ
OrderBy
ThenBy
Comparer<T>
var ordered = theList.OrderBy(x => x.First).ThenBy(x => x.Second);
var reverseOrdered = theList.OrderByDescending(x => x.First)
.ThenByDescending(x => x.Second);
于 2012-05-10T17:51:57.283 に答える
1
同じ を使用できます。Comparer<T>
結果を反転する必要がある場合は、単にmyList<T>.Reverse()
メソッドを使用できます。
于 2012-05-10T17:51:01.213 に答える