データの並べ替え

並べ替え操作では、1 つ以上の属性に基づいてシーケンスの要素を並べ替えます。 最初の並べ替え基準によって、要素に対して 1 番目の並べ替えが実行されます。 2 番目の並べ替え基準を指定すると、最初に並べ替えられたグループごとに、その中の要素をさらに並べ替えることができます。

次の図は、文字のシーケンスに対してアルファベット順の並べ替え操作を実行した結果を示しています。

LINQ 並べ替え操作

次のセクションに、データの並べ替えを実行する標準クエリ演算子のメソッドの一覧を示します。

メソッド

メソッド名

説明

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

OrderBy

値を昇順に並べ替えます。

orderby

Order By

Enumerable.OrderBy

Queryable.OrderBy

OrderByDescending

値を降順に並べ替えます。

orderby … descending

Order By … Descending

Enumerable.OrderByDescending

Queryable.OrderByDescending

ThenBy

2 番目の並べ替えを昇順で実行します。

orderby …, …

Order By …, …

Enumerable.ThenBy

Queryable.ThenBy

ThenByDescending

2 番目の並べ替えを降順で実行します。

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending

Queryable.ThenByDescending

Reverse

コレクションの要素の順序を反転させます。

適用できません。

適用できません。

Enumerable.Reverse<TSource>

Queryable.Reverse<TSource>

クエリ式の構文の例

1 番目の並べ替えの例

1 番目の並べ替え (昇順)

次の例は、LINQ クエリで orderby (Visual Basic では Order By) 句を使用して、配列内の文字列を文字列長に従って昇順に並べ替える方法を示しています。


        Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' the
        ' fox
        ' quick
        ' brown
        ' jumps


            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                brown
                jumps
            */

1 番目の並べ替え (降順)

次の例は、LINQ クエリで orderby descending (Visual Basic では Order By Descending) 句を使用して、文字列を最初の文字に従って降順に並べ替える方法を示しています。


        Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Substring(0, 1) Descending 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' the
        ' quick
        ' jumps
        ' fox
        ' brown


            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Substring(0, 1) descending
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                quick
                jumps
                fox
                brown
            */

2 番目の並べ替えの例

2 番目の並べ替え (昇順)

次の例は、LINQ クエリで orderby (Visual Basic では Order By) 句を使用して、配列内の文字列の 1 番目および 2 番目の並べ替えを実行する方法を示しています。 各文字列は、最初に文字列長を基準として、次に文字列の最初の文字を基準として、どちらも昇順に並べ替えられます。


        Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length, word.Substring(0, 1) 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' fox
        ' the
        ' brown
        ' jumps
        ' quick


            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1)
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                fox
                the
                brown
                jumps
                quick
            */

2 番目の並べ替え (降順)

次の例は、LINQ クエリで orderby descending (Visual Basic では Order By Descending) 句を使用して、1 番目の並べ替えを昇順で実行し、2 番目の並べ替えを降順で実行する方法を示しています。 各文字列は、最初に文字列長を基準として、次に文字列の最初の文字を基準として並べ替えられます。


        Dim words = {"the", "quick", "brown", "fox", "jumps"}

        Dim sortQuery = From word In words 
                        Order By word.Length, word.Substring(0, 1) Descending 
                        Select word

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In sortQuery
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' fox
        ' the
        ' quick
        ' jumps
        ' brown


            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1) descending
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                jumps
                brown
            */

参照

処理手順

方法 : join 句の結果の順序を指定する (C# プログラミング ガイド)

方法: LINQ を使用してクエリ結果を並べ替える (Visual Basic)

方法: 任意の単語またはフィールドを基準にテキスト データの並べ替えまたはフィルター処理を実行する (LINQ)

参照

orderby 句 (C# リファレンス)

Order By 句 (Visual Basic)

System.Linq

概念

標準クエリ演算子の概要