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

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

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

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

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

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

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

Методы

Имя метода

Описание

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

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

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

Join

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

join … in … on … equals …

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

или

Join … [As …]In … On …

Enumerable.Join

Queryable.Join

GroupJoin

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

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin

Queryable.GroupJoin

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

Topic Location
Практическое руководство. Выполнение левых внешних соединений (руководство по программированию на C#) Справочник программиста по C#
Практическое руководство. Выполнение групповых соединений (руководство по программированию на C#) Справочник программиста по C#
Практическое руководство. Соединение с помощью составных ключей (Руководство по программированию в C#) Справочник программиста по C#
Предложение join (Справочник по C#) Справочник программиста по C#
Практическое руководство. Упорядочение результатов предложения соединения (Руководство по программированию на C#) Справочник программиста по C#
Практическое руководство. Выполнение пользовательских операций соединения (Руководство по программированию на C#) Справочник программиста по C#
Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#) Справочник программиста по C#
Практическое руководство. Объединение содержимого из файлов разных форматов (LINQ) LINQ (Language-Integrated Query)
Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ) LINQ (Language-Integrated Query)
Практическое руководство. Выполнение левых внешних соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение групповых соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Соединение с помощью составных ключей (Руководство по программированию в C#) dv_csref
Предложение join (Справочник по C#) dv_csref
Практическое руководство. Упорядочение результатов предложения соединения (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение пользовательских операций соединения (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Объединение содержимого из файлов разных форматов (LINQ) dv_Linq
Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ) dv_Linq
Практическое руководство. Выполнение левых внешних соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение групповых соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Соединение с помощью составных ключей (Руководство по программированию в C#) dv_csref
Предложение join (Справочник по C#) dv_csref
Практическое руководство. Упорядочение результатов предложения соединения (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение пользовательских операций соединения (Руководство по программированию на C#) dv_csref
Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#) dv_csref
Практическое руководство. Объединение содержимого из файлов разных форматов (LINQ) dv_Linq
Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ) dv_Linq

См. также

Задачи

Как формировать соединения и запросы с перекрестными произведениями (LINQ to SQL)

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

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

Анонимные типы

Типы соединений

Ссылки

System.Linq

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