次の方法で共有


データの並べ替え (Visual Basic)

並べ替え操作では、1 つ以上の属性に基づいてシーケンスの要素を並べ替えます。 並べ替えの第 1 条件で、要素に対して一回目の並べ替えが実行されます。 第 2 条件を指定すると、第 1 条件で並べ替えられた各グループ内の要素を並べ替えることができます。

次の図は、一連の文字に対するアルファベット順の並べ替え操作の結果を示しています。

アルファベット順の並べ替え操作を示す図。

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

メソッド

メソッド名 説明 Visual Basic のクエリ式の構文 詳細情報
OrderBy 値を昇順に並べ替えます。 Order By Enumerable.OrderBy

Queryable.OrderBy
OrderByDescending 値を降順に並べ替えます。 Order By … Descending Enumerable.OrderByDescending

Queryable.OrderByDescending
ThenBy 2 番目の並べ替えを昇順で実行します。 Order By …, … Enumerable.ThenBy

Queryable.ThenBy
ThenByDescending 2 番目の並べ替えを降順で実行します。 Order By …, … Descending Enumerable.ThenByDescending

Queryable.ThenByDescending
コレクションの要素の順序を反転させます。 適用されません。 Enumerable.Reverse

Queryable.Reverse

クエリ式の構文の例

主な並べ替えの例

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

次の例では、LINQ クエリで 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

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

次の例では、LINQ クエリで 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

セカンダリ並べ替えの例

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

次の例では、LINQ クエリで Order By 句を使用して、配列内の文字列のプライマリとセカンダリの並べ替えを実行する方法を示します。 文字列は、主に長さで並べ替え、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

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

次の例は、LINQ クエリで Order By Descending 句を使用して、1 番目の並べ替えを昇順で実行し、2 番目の並べ替えを降順で実行する方法を示しています。 文字列は主に長さで並べ替え、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

こちらも参照ください