【C#】オブジェクトリストの並べ替え

C#

オブジェクトのリストを並べ替える場合はリストのSortメソッドを使います。

サンプルコード

Personクラスのオブジェクトを年齢順に並べ替える例です。

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "Charlie", Age = 35 },
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 },
        };

        // 年齢で並べ替え
        people.Sort((p1, p2) => p1.Name.CompareTo(p2.Name));

        foreach (var person in people)
        {
            Console.WriteLine(person);
        }
    }
}

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override string ToString()
    {
        return $"Name: {Name}, Age: {Age}";
    }
}

実行結果

Name: Bob, Age: 25
Name: Alice, Age: 30
Name: Charlie, Age: 35

カスタム比較関数について

Sortメソッドに比較用のラムダ式(または関数デリゲート)を渡します。ラムダ式は2つのPersonオブジェクトを受け取り、そのAgeプロパティを比較しています。

people.Sort((p1, p2) => p1.Age.CompareTo(p2.Age));

年齢順ではなく名前のアルファベット順にしたい場合は、以下のように記述します。

people.Sort((p1, p2) => p1.Name.CompareTo(p2.Name));

実行結果

Name: Alice, Age: 30
Name: Bob, Age: 25
Name: Charlie, Age: 35
タイトルとURLをコピーしました