データの並べ替え
並べ替え操作では、1 つ以上の属性に基づいてシーケンスの要素を並べ替えます。 最初の並べ替え基準によって、要素に対して 1 番目の並べ替えが実行されます。 2 番目の並べ替え基準を指定すると、最初に並べ替えられたグループごとに、その中の要素をさらに並べ替えることができます。
次の図は、文字のシーケンスに対してアルファベット順の並べ替え操作を実行した結果を示しています。
次のセクションに、データの並べ替えを実行する標準クエリ演算子のメソッドの一覧を示します。
メソッド
メソッド名 |
説明 |
C# のクエリ式の構文 |
Visual Basic のクエリ式の構文 |
詳細情報 |
---|---|---|---|---|
OrderBy |
値を昇順に並べ替えます。 |
orderby |
Order By |
|
OrderByDescending |
値を降順に並べ替えます。 |
orderby … descending |
Order By … Descending |
|
ThenBy |
2 番目の並べ替えを昇順で実行します。 |
orderby …, … |
Order By …, … |
|
ThenByDescending |
2 番目の並べ替えを降順で実行します。 |
orderby …, … descending |
Order By …, … Descending |
|
Reverse |
コレクションの要素の順序を反転させます。 |
適用できません。 |
適用できません。 |
クエリ式の構文の例
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)