C#でLINQ式を扱う② OrderBy | 株式会社アースリンク

2020年1月20日

C#でLINQ式を扱う② OrderBy

Icons made by prettycons from www.flaticon.com

 

 

最近C#で開発を行っていて、LINQ式が便利で楽しいのでごく一部を紹介します。

 

LINQ#OrderBy

一昔前はオブジェクトのリストをソートする場合、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、正の数・・・あれ?どっちだっけ・・・と、わけわからなくなるシーンがなくなります。

 

今回は以上となります。

Contact
お問い合わせ

電話番号0120 - 889 - 236

受付時間:平日 9:00-18:00