次の方法で共有


データの並べ替え

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

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

LINQ 並べ替え操作

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

メソッド

メソッド名

Description

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

OrderBy

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

orderby

Order By

Enumerable.OrderBy``2

Queryable.OrderBy``2

OrderByDescending

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

orderby … descending

Order By … Descending

Enumerable.OrderByDescending``2

Queryable.OrderByDescending``2

ThenBy

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

orderby …, …

Order By …, …

Enumerable.ThenBy``2

Queryable.ThenBy``2

ThenByDescending

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

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending``2

Queryable.ThenByDescending``2

Reverse

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

該当なし

該当なし

Enumerable.Reverse``1

Queryable.Reverse``1

クエリ式の構文の例

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

概念

標準クエリ演算子の概要