Операции соединения
Обновлен: Ноябрь 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 … |
|
GroupJoin |
Соединяет две последовательности на основе функции выбора ключа и группирует полученные совпадения для каждого элемента. |
join … in … on … equals … into … |
Group Join … In … On … |
Дополнительные сведения о выполнении операций соединения
См. также
Задачи
Как формировать соединения и запросы с перекрестными произведениями (LINQ to SQL)
Основные понятия
Общие сведения о стандартных операторах запроса