お知らせ
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、正の数・・・あれ?どっちだっけ・・・と、わけわからなくなるシーンがなくなります。
今回は以上となります。