お知らせ
2020年1月20日
C#でLINQ式を扱う② OrderBy
最近C#で開発を行っていて、LINQ式が便利で楽しいのでごく一部を紹介します。
一昔前はオブジェクトのリストをソートする場合、Javaを例にすると、Comparatorクラスやらを作って~などとやっていましたが
.NETではLINQ式というリストをSQLチックに扱えるモノがあります。
※SQLではありません。別物です。foreachの拡張版
今回は、リストに格納されているオブジェクトをソートしてみます。
Program.cs
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<ProductInfo> pList = new List<ProductInfo>(); pList.Add(new ProductInfo() { product_id = "A001", product_name = "クレヨン1" }); pList.Add(new ProductInfo() { product_id = "A002", product_name = "クレヨン2" }); // ①降順で並び替え var pDescList = pList.OrderByDescending(x => x.product_id); Console.WriteLine("降順で並び替え"); foreach (var productInfo in pDescList) { Console.WriteLine($"商品コード:{productInfo.product_id}"); Console.WriteLine($"商品名:{productInfo.product_name}"); } // ②昇順で並び替え var pAscList = pList.OrderBy(x => x.product_id); Console.WriteLine("\r\n昇順で並び替え"); foreach (var productInfo in pAscList) { Console.WriteLine($"商品コード:{productInfo.product_id}"); Console.WriteLine($"商品名:{productInfo.product_name}"); } Console.ReadKey(); } /// <summary> /// 商品情報オブジェクト /// </summary> class ProductInfo { public string product_id { get; set; } public string product_name { get; set; } } } }
実行結果
降順で並び替え
商品コード:A002
商品名:クレヨン2
商品コード:A001
商品名:クレヨン1
昇順で並び替え
商品コード:A001
商品名:クレヨン1
商品コード:A002
商品名:クレヨン2
①と②の各たった①行で終わります。
私みたいに古い人間はリストのソートというと少し億劫になるのですが、これがあれば楽勝です。
Comparatorみたいに昇順が,降順が負の数、0、正の数・・・あれ?どっちだっけ・・・と、わけわからなくなるシーンがなくなります。
今回は以上となります。