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 方法的行为。 返回的序列包含输入序列的唯一元素。
Except
下图演示 Enumerable.Except 的行为。 返回的序列只包含位于第一个输入序列但不位于第二个输入序列的元素。
相交
下图演示 Enumerable.Intersect 的行为。 返回的序列包含两个输入序列共有的元素。
Union
下图演示对两个字符序列执行的联合操作。 返回的序列包含两个输入序列的唯一元素。
查询表达式语法示例
下面的示例在 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