Поделиться через


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

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

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

Методы

Имя метода

Описание

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

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

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

Distinct

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

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

Distinct

Enumerable.Distinct``1

Queryable.Distinct``1

Except

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

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

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

Enumerable.Except``1

Queryable.Except``1

Intersect

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

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

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

Enumerable.Intersect``1

Queryable.Intersect``1

Union

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

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

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

Enumerable.Union``1

Queryable.Union``1

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

Distinct

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

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

Except

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

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

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)

System.Linq

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

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