Операции над множествами

Обновлен: Ноябрь 2007

В LINQ операциями с множествами называют операции запроса, образующие результирующий набор, основанный на наличии или отсутствии эквивалентных элементов внутри одной или разных коллекций (или множеств).

В следующем разделе перечислены методы стандартных операторов запросов, выполняющие операции с множествами.

Методы

Имя метода

Описание

Синтаксис выражения запроса C#

Синтаксис выражения запроса Visual Basic

Дополнительные сведения

Distinct

Удаляет повторяющиеся значения из коллекции.

Неприменимо.

Distinct

Enumerable.Distinct

Queryable.Distinct

Except

Возвращает разность множеств — набор элементов одной коллекции, которые не содержатся во второй коллекции.

Неприменимо.

Неприменимо.

Enumerable.Except

Queryable.Except

Intersect

Возвращает пересечение множеств — набор элементов, содержащихся в каждой из коллекций.

Неприменимо.

Неприменимо.

Enumerable.Intersect

Queryable.Intersect

Union

Возвращает объединение множеств — набор уникальных элементов, содержащихся в любой из коллекций.

Неприменимо.

Неприменимо.

Enumerable.Union

Queryable.Union

Сравнение операций над множествами

Distinct

На следующем рисунке показано действие метода Enumerable.Distinct в последовательности знаков. Возвращаемая последовательность содержит уникальные элементы из входной последовательности.

График, демонстрирующий поведение Distinct().

Except

На следующем рисунке показано действие метода Enumerable.Except. Возвращаемая последовательность содержит только те элементы из первой входной последовательности, которые не содержатся во второй входной последовательности.

График, отображающий действие Except().

Intersect

На следующем рисунке показано действие метода Enumerable.Intersect. Возвращаемая последовательность содержит элементы, общие для обеих входных последовательностей.

График, отображающий пересечение двух пакетов.

Union

На следующем рисунке показана операция объединения двух последовательностей знаков. Возвращаемая последовательность содержит уникальные элементы из обеих входных последовательностей.

График, показывающий объединение двух пакетов.

Пример синтаксиса выражения запроса

В следующем примере предложение Distinct (доступное только в Visual Basic) используется в запросе LINQ для возвращения уникальных чисел из списка целочисленных значений.

Dim classGrades As New System.Collections.Generic.List(Of Integer)(New Integer() {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 

Дополнительные сведения о выполнении операций с множествами

Topic Location
Практическое руководство. Нахождение разности наборов между двумя списками (LINQ to SQL) LINQ (Language-Integrated Query)
Практическое руководство. Объединение и сравнение коллекций строк (LINQ) LINQ (Language-Integrated Query)
Практическое руководство. Нахождение разности наборов между двумя списками (LINQ to SQL) dv_Linq
Практическое руководство. Объединение и сравнение коллекций строк (LINQ) dv_Linq
Практическое руководство. Нахождение разности наборов между двумя списками (LINQ to SQL) dv_Linq
Практическое руководство. Объединение и сравнение коллекций строк (LINQ) dv_Linq

См. также

Основные понятия

Общие сведения о стандартных операторах запроса

Ссылки

Предложение Distinct (Visual Basic)

System.Linq