5

カスタム オブジェクトのリストがあります。オブジェクトには、1 つの文字列と 2 つの小数が含まれます。2 番目の 10 進数フィールドに基づいてリストを並べ替え、次に最初の 10 進数フィールドを降順で並べ替えたいと思います。

例:

object 1 -> "a", 100, 10
object 2 -> "b", 300, 0
object 3 -> "c", 200, 200
object 4 -> "b", 400, 0

オブジェクト 3、オブジェクト 1、オブジェクト 4、オブジェクト 2 としてソートされます。

これがすでに回答されている場合は申し訳ありません - 見つけられなかったので、その投稿を教えてください

4

4 に答える 4

5

他の回答は、IEnumerable<T> を構築する優れた方法を示しています。これは、列挙されたときに、記述した順序でリスト内の項目を生成します。いわばリストの「ビュー」を提供し、リスト自体の項目の順序を変更しません。

実際にリストを並べ替えたい場合 (つまり、アイテムが順番どおりになるようにリストをその場で変更する場合)、次のようにList<T>.Sort メソッドを使用できます。

list.Sort((x, y) =>
{
    int result = decimal.Compare(y.SecondDecimal, x.SecondDecimal);
    if (result == 0) 
        result = decimal.Compare(x.FirstDecimal, y.FirstDecimal);
    return result;
});
于 2013-08-23T22:31:03.873 に答える