LINQ のセット操作は、同じコレクションまたは個別のコレクション (またはセット) 内の同等の要素の有無に基づいて結果セットを生成するクエリ操作を指します。
セット操作を実行する標準のクエリ演算子メソッドを次のセクションに示します。
メソッド
メソッド名 | 説明 | Visual Basic のクエリ式の構文 | 詳細情報 |
---|---|---|---|
Distinct または DistinctBy | コレクションから重複する値を削除します。 | Distinct |
Enumerable.Distinct Enumerable.DistinctBy Queryable.Distinct Queryable.DistinctBy |
Except または ExceptBy | セットの差を返します。これは、2 番目のコレクションに表示されない 1 つのコレクションの要素を意味します。 | 適用されません。 | Enumerable.Except Enumerable.ExceptBy Queryable.Except Queryable.ExceptBy |
Intersect または IntersectBy | 積集合 (2 つのコレクションのそれぞれに出現する要素) を返します。 | 適用されません。 | Enumerable.Intersect Enumerable.IntersectBy Queryable.Intersect Queryable.IntersectBy |
Union または UnionBy | 和集合 (2 つのコレクションのどちらかに出現する一意の要素) を返します。 | 適用されません。 | Enumerable.Union Enumerable.UnionBy Queryable.Union Queryable.UnionBy |
Set 操作の比較
明確
次の図は、一連の文字に対する Enumerable.Distinct メソッドの動作を示しています。 返されたシーケンスには、入力シーケンスからの一意の要素が格納されています。
除く
次の図は、 Enumerable.Exceptの動作を示しています。 返されるシーケンスには、2 番目の入力シーケンスに含まれていない最初の入力シーケンスの要素のみが含まれます。
交差する
次の図は、 Enumerable.Intersectの動作を示しています。 返されたシーケンスには、両方の入力シーケンスに共通する要素が格納されています。
結合
次の図は、2 つの文字シーケンスに対する和集合演算を示しています。 返されたシーケンスには、両方の入力シーケンスからの一意の要素が格納されています。
クエリ式の構文例
次の例では、LINQ クエリの Distinct
句を使用して、整数の一覧から一意の数値を返します。
Dim classGrades = New System.Collections.Generic.List(Of Integer) From {63, 68, 71, 75, 68, 92, 75}
Dim distinctQuery = From grade In classGrades
Select grade Distinct
Dim sb As New System.Text.StringBuilder("The distinct grades are: ")
For Each number As Integer In distinctQuery
sb.Append(number & " ")
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' The distinct grades are: 63 68 71 75 92
こちらも参照ください
.NET