次の方法で共有


データのパーティション分割 (Visual Basic)

LINQ でのパーティション分割とは、要素を並べ替えずに入力シーケンスを 2 つのセクションに分割し、セクションの 1 つを返す操作を指します。

次の図は、一連の文字に対する 3 つの異なるパーティション分割操作の結果を示しています。 最初の操作は、シーケンス内の最初の 3 つの要素を返します。 2 番目の操作では、最初の 3 つの要素をスキップし、残りの要素を返します。 3 番目の操作では、シーケンス内の最初の 2 つの要素をスキップし、次の 3 つの要素を返します。

3 つの LINQ パーティション分割操作を示す図。

次のセクションでは、パーティション シーケンスの標準クエリ演算子メソッドを示します。

オペレーター

演算子名 説明 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

こちらも参照ください