LINQ でのパーティション分割とは、要素を並べ替えずに入力シーケンスを 2 つのセクションに分割し、セクションの 1 つを返す操作を指します。
次の図は、一連の文字に対する 3 つの異なるパーティション分割操作の結果を示しています。 最初の操作は、シーケンス内の最初の 3 つの要素を返します。 2 番目の操作では、最初の 3 つの要素をスキップし、残りの要素を返します。 3 番目の操作では、シーケンス内の最初の 2 つの要素をスキップし、次の 3 つの要素を返します。
次のセクションでは、パーティション シーケンスの標準クエリ演算子メソッドを示します。
オペレーター
演算子名 | 説明 | Visual Basic のクエリ式の構文 | 詳細情報 |
---|---|---|---|
スキップ | シーケンス内の指定した位置まで要素をスキップします。 | Skip |
Enumerable.Skip Queryable.Skip |
SkipWhile | 要素が条件を満たさないまで、述語関数に基づいて要素をスキップします。 | Skip While |
Enumerable.SkipWhile Queryable.SkipWhile |
取る | シーケンス内の指定した位置まで要素を受け取ります。 | Take |
Enumerable.Take Queryable.Take |
テイクホワイル | 要素が条件を満たさないまで、述語関数に基づいて要素を受け取ります。 | Take While |
Enumerable.TakeWhile Queryable.TakeWhile |
チャンク | シーケンスの要素を、指定した最大サイズのチャンクに分割します。 | Enumerable.Chunk Queryable.Chunk |
クエリ式の構文の例
スキップ
次のコード例では、Visual Basic の Skip
句を使用して、配列内の残りの文字列を返す前に、文字列の配列内の最初の 4 つの文字列をスキップします。
Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}
Dim query = From word In words
Skip 4
Dim sb As New System.Text.StringBuilder()
For Each str As String In query
sb.AppendLine(str)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' keeps
' the
' doctor
' away
SkipWhile
次のコード例では、Visual Basic の Skip While
句を使用して配列内の文字列をスキップします。文字列の最初の文字は "a" です。 配列内の残りの文字列が返されます。
Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}
Dim query = From word In words
Skip While word.Substring(0, 1) = "a"
Dim sb As New System.Text.StringBuilder()
For Each str As String In query
sb.AppendLine(str)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' day
' keeps
' the
' doctor
' away
取る
次のコード例では、Visual Basic の Take
句を使用して、文字列の配列内の最初の 2 つの文字列を返します。
Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}
Dim query = From word In words
Take 2
Dim sb As New System.Text.StringBuilder()
For Each str As String In query
sb.AppendLine(str)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' an
' apple
テイクホワイル
次のコード例では、Visual Basic の Take While
句を使用して配列から文字列を返しますが、文字列の長さは 5 以下です。
Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}
Dim query = From word In words
Take While word.Length < 6
Dim sb As New System.Text.StringBuilder()
For Each str As String In query
sb.AppendLine(str)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' an
' apple
' a
' day
' keeps
' the
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET