Операции над множествами
В LINQ операциями с множествами называют операции запроса, образующие результирующий набор, основанный на наличии или отсутствии эквивалентных элементов внутри одной или разных коллекций (или множеств).
В следующем разделе перечислены методы стандартных операторов запросов, выполняющие операции с множествами.
Методы
Имя метода |
Описание |
Синтаксис выражения запроса C# |
Синтаксис выражения запроса Visual Basic |
Дополнительные сведения |
---|---|---|---|---|
Distinct |
Удаляет повторяющиеся значения из коллекции. |
Неприменимо. |
Distinct |
|
Except |
Возвращает разность множеств — набор элементов одной коллекции, которые не содержатся во второй коллекции. |
Неприменимо. |
Неприменимо. |
|
Intersect |
Возвращает пересечение множеств — набор элементов, содержащихся в каждой из коллекций. |
Неприменимо. |
Неприменимо. |
|
Union |
Возвращает объединение множеств — набор уникальных элементов, содержащихся в любой из коллекций. |
Неприменимо. |
Неприменимо. |
Сравнение операций над множествами
Distinct
На следующем рисунке показано действие метода Enumerable.Distinct``1 в последовательности знаков. Возвращаемая последовательность содержит уникальные элементы из входной последовательности.
Except
На следующем рисунке показано действие метода Enumerable.Except``1. Возвращаемая последовательность содержит только те элементы из первой входной последовательности, которые не содержатся во второй входной последовательности.
Intersect
На следующем рисунке показано действие метода Enumerable.Intersect``1. Возвращаемая последовательность содержит элементы, общие для обеих входных последовательностей.
Union
На следующем рисунке показана операция объединения двух последовательностей знаков. Возвращаемая последовательность содержит уникальные элементы из обеих входных последовательностей.
Пример синтаксиса выражения запроса
В следующем примере предложение Distinct (доступное только в Visual Basic) используется в запросе LINQ для возвращения уникальных чисел из списка целочисленных значений.
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
См. также
Задачи
Практическое руководство. Объединение и сравнение коллекций строк (LINQ)
Практическое руководство. Нахождение разности наборов между двумя списками (LINQ to SQL)
Ссылки
Предложение Distinct (Visual Basic)