次の方法で共有


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

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

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

Illustration that shows three LINQ partitioning operations.

次のセクションに、シーケンスのパーティション分割を実行する標準クエリ演算子メソッドの一覧を示します。

演算子

演算子名 説明 Visual Basic のクエリ式の構文 説明
Skip シーケンス内の指定した位置まで要素をスキップします。 Skip Enumerable.Skip

Queryable.Skip
SkipWhile 述語関数に基づき、条件を満たさない要素が出現する位置まで要素をスキップします。 Skip While Enumerable.SkipWhile

Queryable.SkipWhile
Take シーケンス内の指定した位置までの要素を取得します。 Take Enumerable.Take

Queryable.Take
TakeWhile 述語関数に基づき、条件を満たさない要素が出現する位置までの要素を取得します。 Take While Enumerable.TakeWhile

Queryable.TakeWhile
チャンク シーケンスの要素を、指定された最大サイズのチャンクに分割します。 Enumerable.Chunk
Queryable.Chunk

クエリ式の構文例

Skip

次のコード例は、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

Take

次のコード例は、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

TakeWhile

次のコード例は、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

関連項目