C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# LINQ ThenByメソッドの使い方を徹底解説

C#のLINQにおけるThenBy()メソッドは、シーケンス内の要素を二次キー(副次的な条件)で並べ替えるためのメソッドです。OrderBy()で一次ソートを行った後、ThenBy()を続けることで、同じ値を持つ要素同士をさらに別の条件でソートできます。

ThenByメソッドの基本構文

まず、次のような文字列配列を用意します。

string[] str = { "AAA", "AAAA", "A", "AAAAA", "AAAAAAAAA" };

この配列に対して、ラムダ式を使いThenBy()メソッド内に条件を設定することで、文字列を文字数順に並べ替えることができます。

IEnumerable<string> res = str.AsQueryable()
    .OrderBy(alp => alp.Length)
    .ThenBy(alp => alp);

このコードでは、まずOrderBy(alp => alp.Length)によって文字列の長さが短い順にソートされ、その後ThenBy(alp => alp)によって同じ長さの要素同士がアルファベット順(辞書順)に並べ替えられます。

サンプルコード

実際に動作する完全なコード例を見てみましょう。

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        string[] str = { "AAA", "AAAA", "A", "AAAAA", "AAAAAAAAA" };

        IEnumerable<string> res = str.AsQueryable()
            .OrderBy(alp => alp.Length)
            .ThenBy(alp => alp);

        foreach (string arr in res)
            Console.WriteLine(arr);
    }
}

実行結果

A
AAA
AAAA
AAAAA
AAAAAAAAA

ポイントまとめ

  • ThenBy()は必ずOrderBy()OrderByDescending()の後に使用します。
  • 降順の二次ソートを行いたい場合はThenByDescending()を使用します。
  • 複数の条件でソートしたい場合は、ThenBy()を連結して記述できます。

このように、ThenBy()メソッドを活用することで、柔軟かつ直感的に複数条件でのソート処理を実装できます。データの一覧表示やランキング処理など、実務でも頻繁に使われるテクニックなので、ぜひマスターしておきましょう。

  1. 【初心者向け】C#のLINQ Whereメソッドの使い方を徹底解説!条件に合う要素を抽出する方法

    C# LINQのWhereメソッドとは? C#のLINQに用意されているWhereメソッドは、指定した条件(述語:Predicate)に基づいて、コレクションや配列の中から該当する要素だけを抽出(フィルタリング)するためのメソッドです。 データの一覧から特定の条件を満たす項目のみを取り出したい場面は開発現場で非常に多く、WhereメソッドはLINQの中でも特に使用頻度の高い機能といえます。 例えば、以下のように記述すると「70以上の要素」だけを取得できます。 Where((n, index) => n >= 70); このラムダ式では、各要素 n が70以上であるかどうかを判定し、

  2. C# LINQ Distinct()メソッドでリストから重複要素を削除する方法

    C#のLINQで重複しない要素(一意の値)だけを取得したい場合は、Distinct()メソッドを使用します。このメソッドは、シーケンス内の重複する要素を取り除き、各要素を1度だけ返してくれます。 重複要素を含むリストの準備 まずは、重複した要素を含むリストを用意しましょう。 List<int> points = new List<int> { 5, 10, 5, 20, 30, 30, 40, 50, 60, 70 }; このリストには「5」と「30」がそれぞれ2回含まれています。 Distinct()メソッドで重複を除去する 重複を除いた要素を取得するには、次のように