Операции соединения
Соединением двух источников данных является связь объектов из одного источника данных с объектами, имеющими общий атрибут, в другом источнике данных.
Соединение является важной операцией в запросах к источникам данных, связи которых друг с другом не могут использоваться непосредственно.В объектно-ориентированном программировании это может означать корреляцию между объектами, которая не была смоделирована, например связь в обратном направлении одностороннего отношения.Примером одностороннего отношения служит класс 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 = y.a -или- Join … [As …]In … On … |
|
GroupJoin |
Соединяет две последовательности на основе функции выбора ключа и группирует полученные совпадения для каждого элемента. |
join … in … on … equals … into … |
Group Join … In … On … |
См. также
Задачи
How to: Formulate Joins and Cross-Product Queries (LINQ to SQL)
Практическое руководство. Объединение содержимого из файлов разных форматов (LINQ)
Практическое руководство. Выполнение групповых соединений (Руководство по программированию на C#)
Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#)
Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ)
Ссылки
Анонимные типы (Руководство по программированию в C#)
Предложение join (Справочник по C#)
Предложение Join (Visual Basic)