この投稿では、C#の複数のフィールドに対してオブジェクトのリストを並べ替える方法について説明します。

1.LINQの使用

リストの並べ替えられたコピーを作成するには、LINQを使用できます OrderBy() 方法。オブジェクトを後続のフィールドと比較するには、 ThenBy() メソッド(または ThenByDescending).

たとえば、次のコードは、最初に従業員のリストを name フィールドそしてそれから age フィールド、つまり、同じ名前の従業員の場合、従業員の年齢によって順序が決まります。

ダウンロード  コードを実行する

2.使用する List<T>.Sort 方法 (System.Collections.Generic)

上記のLINQソリューションは、リストの新しいソート済みコピーを作成します。推奨されるアプローチは、リストを使用することです Sort() リストをソートする方法 所定の位置に.ソートを行うことができます Comparison<T> 代理人または IComparer<T>/IComparable<T> implementation.

1.使用できます 比較代表 自然な順序を持たないオブジェクトに順序を提供します。並べ替えメソッドに渡すと、要素の並べ替え順序を正確に制御できます。比較デリゲートは、を使用して実装できます ラムダ式。のリストを比較するには Employee 最初のオブジェクト name そして age、 我々はできる:

ダウンロード  コードを実行する

 
2.別のアプローチは、カスタムを提供することです IComparer<T> を使用してリストを分別するための実装 Sort() 方法。アイデアは、 IComparer<T> 別のクラスのインターフェイス、そのオーバーライド Compare() メソッド、およびそのクラスのインスタンスをに渡します Sort() 方法。比較するフィールドが複数ある場合、これはラムダ式への推奨されるアプローチです。

ダウンロード  コードを実行する

 
3. IComparable<T> インターフェイスは、それを実装する各クラスのオブジェクトに自然な順序を課します。次のコードでは、 Employee クラスは IComparable<T> インターフェイスとそのオーバーライド CompareTo() 方法。 The ListEmployee 次に、オブジェクトは引数なしを使用してソートされます Sort() 方法。

ダウンロード  コードを実行する

これで、C#の複数のフィールドでオブジェクトのリストを分別ることができます。