データの並べ替え

更新 : 2007 年 11 月

並べ替え操作では、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() As String = {"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 クエリで orderbydescending (Visual Basic では Order By Descending) 句を使用して、文字列を最初の文字に従って降順に並べ替える方法を示しています。

Dim words() As String = {"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() As String = {"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 クエリで orderbydescending (Visual Basic では Order By Descending) 句を使用して、1 番目の並べ替えを昇順で実行し、2 番目の並べ替えを降順で実行する方法を示しています。各文字列は、最初に文字列長を基準として、次に文字列の最初の文字を基準として並べ替えられます。

Dim words() As String = {"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
*/

データの並べ替え方法に関する詳細情報

Topic Location
方法 : 任意の単語またはフィールドを基準にテキスト データを並べ替える、またはフィルタ処理をする (LINQ) 統合言語クエリ (LINQ: Language-Integrated Query)
orderby 句 (C# リファレンス) C# プログラマーズ リファレンス
方法 : LINQ を使用してコレクションを並べ替える (Visual Basic) Visual Basic 言語リファレンス
方法 : join 句の結果の順序を指定する (C# プログラミング ガイド) C# プログラマーズ リファレンス
orderby 句 (C# リファレンス) dv_csref
方法 : join 句の結果の順序を指定する (C# プログラミング ガイド) dv_csref
方法: 任意の単語またはフィールドを基準にテキスト データの並べ替えまたはフィルター処理を実行する (LINQ) dv_Linq
方法: LINQ を使用してクエリ結果を並べ替える (Visual Basic) dv_vbalr
方法: 任意の単語またはフィールドを基準にテキスト データの並べ替えまたはフィルター処理を実行する (LINQ) dv_Linq
orderby 句 (C# リファレンス) dv_csref
方法 : join 句の結果の順序を指定する (C# プログラミング ガイド) dv_csref
方法: LINQ を使用してクエリ結果を並べ替える (Visual Basic) dv_vbalr

参照

概念

標準クエリ演算子の概要

参照

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

Order By 句 (Visual Basic)

System.Linq