C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でリストの要素を降順に並べ替える方法

C#では、LINQのorderby句とdescendingキーワードを組み合わせることで、リスト内の要素を簡単に降順(大きい順・逆アルファベット順)に並べ替えることができます。

サンプルデータの準備

まず、以下のようなEmployeeクラスのオブジェクトを格納したリストを用意します。

IList<Employee> emp = new List<Employee>() {
    new Employee() { EmployeeRank = 4, EmpName = "Amit", EmpMarks = 90 },
    new Employee() { EmployeeRank = 05, EmpName = "Raman", EmpMarks = 95 }
};

降順ソートの実装

次に、orderbydescendingを使って、EmpNameプロパティを基準に要素を降順で並べ替えます。クエリ構文は以下のようになります。

var res = from str in emp orderby str.EmpName descending select str;

このように、並べ替えの基準となるプロパティ名の後にdescendingキーワードを指定するだけで、降順ソートが実現できます。昇順にしたい場合は、このキーワードを省略するかascendingを指定します。

完全なコード例

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        IList<Employee> emp = new List<Employee>() {
            new Employee() { EmployeeRank = 4, EmpName = "Amit", EmpMarks = 90 },
            new Employee() { EmployeeRank = 05, EmpName = "Raman", EmpMarks = 95 }
        };

        var res = from str in emp orderby str.EmpName descending select str;

        Console.WriteLine("学生リスト(降順):");
        foreach (var list in res)
            Console.WriteLine(list.EmpName);
    }
}

public class Employee {
    public int EmployeeRank { get; set; }
    public string EmpName { get; set; }
    public int EmpMarks { get; set; }
}

実行結果

学生リスト(降順):
Raman
Amit

補足:メソッド構文での書き方

LINQにはメソッド構文もあります。OrderByDescendingメソッドを使用すると、同じ処理を以下のように記述できます。

var res = emp.OrderByDescending(str => str.EmpName);

どちらの書き方でも結果は同じですが、メソッド構文の方が簡潔に書けるため、近年のC#コードではこちらが好まれる傾向にあります。複数のキーで並べ替えたい場合は、ThenByDescendingメソッドやorderby ... descending, ... descendingのように組み合わせることも可能です。

  1. Pythonのsort()メソッド完全ガイド|昇順・降順・keyパラメータの使い方

    このチュートリアルでは、Pythonリストのsort()メソッドについて詳しく解説します。sort()メソッドは、リストを昇順または降順に並べ替えるために使用されるメソッドです。オプション引数の有無によって、さまざまな使い方ができます。 sort()メソッドはインプレース(破壊的)メソッドであり、呼び出すと元のリストが直接変更される点に注意しましょう。元のリストを残したい場合は、組み込み関数のsorted()を使用してください。 それでは、順番に見ていきましょう。 デフォルトのsort():昇順にソートする オプション引数を何も指定せずにsort()メソッドを呼び出すと、リストは昇順にソート

  2. Pythonでリスト内の要素の相対的な順序(順位)を求める方法

    整数の要素を持つリストが与えられたとき、その要素同士の「相対的な順序」を求めることを考えます。これは、リストを昇順に並べ替えた場合に、各要素がどの位置(インデックス)に来るかを示すものです。例えば [78, 14, 0, 11] を昇順に並べると [0, 11, 14, 78] となるため、元の各要素の相対的な順位はそれぞれ [3, 2, 0, 1] となります。本記事では、この相対順序を求める2つの方法を紹介します。方法1:sorted() と index() を使うまずリスト全体を sorted() で並べ替え、その結果に対して各要素の index() を求めます。リスト内包表記を使えば、