C#のLinqで配列の並べ替え2「クラスのプロパティをキーにソート」

C# コンピュータ
C#

番号(No)と名前(Name)を持つクラスのオブジェクトの配列(List<>)をNoをキーにソートしてみます。

namespace SortSample1;
public class ToDouFuKen
{
    public int No {get; set;} = 0;
    public string Name {get; set;} = "";
}
 class Program
{
    public static void Main()
    {
        List<ToDouFuKen> array = new List<ToDouFuKen>
        {
            new ToDouFuKen{ No = 7, Name = "福島県"},
            new ToDouFuKen{ No = 1, Name = "北海道"},
            new ToDouFuKen{ No = 6, Name = "山形県"},
            new ToDouFuKen{ No = 2, Name = "青森県"},
            new ToDouFuKen{ No = 5, Name = "秋田県"},
            new ToDouFuKen{ No = 3, Name = "岩手県"},
            new ToDouFuKen{ No = 4, Name = "宮城県"},
        };

        foreach(var e in array.OrderBy(a=>a.No))
        {
            Console.WriteLine("No:{0} Name:{1}", e.No, e.Name);
        }
    }
}

結果

No:1 Name:北海道
No:2 Name:青森県
No:3 Name:岩手県
No:4 Name:宮城県
No:5 Name:秋田県
No:6 Name:山形県
No:7 Name:福島県

雑記:
SQLやExcelのソート機能を思い出します。個人的にC#で使うことは無かったのですが、画像処理のメディアンフィルタを自前で作成していて、カラーのピクセルを高輝度で並べ替える必要があり、こちらの方法に行きつきました。画像処理で使うにはパフォーマンス的に難アリ(C#向きではないですし、自前でコードを書くこと自体無謀、ライブラリを使いましょう)ですが、直観的でわかりやすい点は良いと思います。

コメント