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


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

В 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

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

Bb546153.collapse_all(ru-ru,VS.110).gifDistinct

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

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

Bb546153.collapse_all(ru-ru,VS.110).gifExcept

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

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

Bb546153.collapse_all(ru-ru,VS.110).gifIntersect

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

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

Bb546153.collapse_all(ru-ru,VS.110).gifUnion

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

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

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

В следующем примере предложение 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

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

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