Операции соединения

Соединение двух источников данных — это связь объектов в одном источнике данных с объектами, которые имеют общий атрибут в другом источнике данных.

Соединение является важной операцией в запросах, направленных на источники данных, отношения которых друг к другу нельзя отследить напрямую. В объектно-ориентированном программировании оно может означать корреляцию между немоделируемыми объектами, например такими, как обратное направление одностороннего отношения. Примером одностороннего отношения является класс Customer, имеющий свойство типа City (город), в то время как класс City не имеет свойства, которое является коллекцией объектов Customer (клиент). В случае наличия списка объектов City для поиска всех клиентов в каждом городе можно использовать операцию соединения.

В платформе LINQ представлены методы соединения Join``4 и GroupJoin``4. Они выполняют эквисоединения, или соединения, которые сопоставляют два источника данных на основе равенства их ключей. (Для сравнения, Transact-SQL поддерживает операции соединения, отличные от оператора "равно", например оператор "меньше, чем".) В терминах реляционных баз данных Join``4 реализует внутреннее соединение — тип соединения, в котором возвращаются только те объекты, у которых есть совпадения в другом наборе данных. Метод GroupJoin``4 не имеет прямого эквивалента в терминах реляционных баз данных, но реализует расширенный набор внутренних соединений и левых внешних соединений. Левое внешнее соединение возвращает каждый элемент первого (левого) источника данных, даже если он не имеет связанных элементов в другом источнике данных.

На следующем рисунке показано концептуальное представление из двух наборов и элементов, входящих в эти наборы, которые включены либо во внутреннее соединение, либо в левое внешнее соединение.

Два накладывающихся кольца, отображающие внешнее/внутреннее.

Методы

Имя метода

Описание

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

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

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

Join

Соединяет две последовательности на основании функций селектора ключа и извлекает пары значений.

join … in … on … equals …

From x In …, y In … Where x.a = y.a

-или-

Join … [As …]In … On …

Enumerable.Join``4

Queryable.Join``4

GroupJoin

Соединяет две последовательности на основании функций селектора ключа и группирует полученные при сопоставлении данные для каждого элемента.

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin``4

Queryable.GroupJoin``4

См. также

Задачи

Формирование соединений и запросов с перекрестными произведениями

Практическое руководство. Соединение с помощью составных ключей (Руководство по программированию в C#)

Практическое руководство. Объединение содержимого из файлов разных форматов (LINQ)

Практическое руководство. Упорядочение результатов предложения соединения (Руководство по программированию на C#)

Практическое руководство. Выполнение пользовательских операций соединения (Руководство по программированию на C#)

Практическое руководство. Выполнение групповых соединений (Руководство по программированию на C#)

Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#)

Практическое руководство. Выполнение левых внешних соединений (Руководство по программированию на C#)

Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ)

Ссылки

System.Linq

Анонимные типы (Руководство по программированию в C#)

Предложение join (Справочник по C#)

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

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

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

Анонимные типы (Visual Basic)