プログラマーな日々

プログラマーをやっています。好きなツール:TaskChute Cloud・WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

IEnumerable.ThenByDescendingメソッド

Enumerable.ThenByDescending(TSource, TKey) メソッド (IOrderedEnumerable(TSource), Func(TSource, TKey)) (System.Linq)
キーに従って、シーケンス内の後続の要素を降順で配置します。

SQLでは、ORDER BYの2つ目以降の列の降順指定に相当します。

ソースコード

using System;
using System.Linq;

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            Man[] mans = new Man[] { 
                new Man() { Name = "suzuki taro", Age = 20 },
                new Man() { Name = "sato taro", Age = 21 },
                new Man() { Name = "sato taro", Age = 20 }
            };

            // SQLの"ORDER BY Man.Name, Man.Age DESC"に相当する。
            foreach (Man man in mans.OrderBy(man => man.Name).ThenByDescending(man => man.Age)) {
                Console.WriteLine(man);
            }

            Console.ReadKey();
        }
    }

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

        public override string ToString() {
            return string.Format("Name = {0}, Age = {1}", Name, Age);
        }
    }
}

実行結果