Set 运算 (Visual Basic)

LINQ 中的集运算是指根据相同或不同集合(或集)中是否存在等效元素来生成结果集的查询运算。

下节列出了执行集运算的标准查询运算符方法。

方法

方法名 描述 Visual Basic 查询表达式语法 详细信息
Distinct 或 DistinctBy 删除集合中的重复值。 Distinct Enumerable.Distinct
Enumerable.DistinctBy
Queryable.Distinct
Queryable.DistinctBy
Except 或 ExceptBy 返回差集,差集指位于一个集合但不位于另一个集合的元素。 不适用。 Enumerable.Except
Enumerable.ExceptBy
Queryable.Except
Queryable.ExceptBy
Intersect 或 IntersectBy 返回交集,交集指同时出现在两个集合中的元素。 不适用。 Enumerable.Intersect
Enumerable.IntersectBy
Queryable.Intersect
Queryable.IntersectBy
Union 或 UnionBy 返回并集,并集指位于两个集合中任一集合的唯一的元素。 不适用。 Enumerable.Union
Enumerable.UnionBy
Queryable.Union
Queryable.UnionBy

比较集运算

Distinct

下图演示字符序列上 Enumerable.Distinct 方法的行为。 返回的序列包含输入序列的唯一元素。

Graphic showing the behavior of Distinct().

Except

下图演示 Enumerable.Except 的行为。 返回的序列只包含位于第一个输入序列但不位于第二个输入序列的元素。

Graphic showing the action of Except().

相交

下图演示 Enumerable.Intersect 的行为。 返回的序列包含两个输入序列共有的元素。

Graphic showing the intersection of two sequences.

Union

下图演示对两个字符序列执行的联合操作。 返回的序列包含两个输入序列的唯一元素。

Graphic showing the union of two sequences.

查询表达式语法示例

下面的示例在 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 

另请参阅