DbExpressionBuilder.Join Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Join(DbExpression, DbExpression, Func<DbExpression,DbExpression>, Func<DbExpression,DbExpression>) |
Создает новый класс DbJoinExpression, который соединяет наборы, заданные внешними и внутренними выражениями при условии равенства между указанными внешними и внутренними ключами, с помощью InnerJoin в качестве DbExpressionKind. |
Join<TSelector>(DbExpression, DbExpression, Func<DbExpression, DbExpression>, Func<DbExpression,DbExpression>, Func<DbExpression, DbExpression,TSelector>) |
Создает новый DbProjectExpression, который проецирует указанный селектор на наборы, заданные внешними и внутренними выражениями, соединенными условием равенства между указанными внешними и внутренними ключами, с помощью InnerJoin как DbExpressionKind. |
Join(DbExpression, DbExpression, Func<DbExpression,DbExpression>, Func<DbExpression,DbExpression>)
Создает новый класс DbJoinExpression, который соединяет наборы, заданные внешними и внутренними выражениями при условии равенства между указанными внешними и внутренними ключами, с помощью InnerJoin в качестве DbExpressionKind.
public:
[System::Runtime::CompilerServices::Extension]
static System::Data::Common::CommandTrees::DbJoinExpression ^ Join(System::Data::Common::CommandTrees::DbExpression ^ outer, System::Data::Common::CommandTrees::DbExpression ^ inner, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ outerKey, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ innerKey);
public static System.Data.Common.CommandTrees.DbJoinExpression Join (this System.Data.Common.CommandTrees.DbExpression outer, System.Data.Common.CommandTrees.DbExpression inner, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> outerKey, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> innerKey);
static member Join : System.Data.Common.CommandTrees.DbExpression * System.Data.Common.CommandTrees.DbExpression * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> -> System.Data.Common.CommandTrees.DbJoinExpression
<Extension()>
Public Function Join (outer As DbExpression, inner As DbExpression, outerKey As Func(Of DbExpression, DbExpression), innerKey As Func(Of DbExpression, DbExpression)) As DbJoinExpression
Параметры
- outer
- DbExpression
DbExpression, указывающий аргумент внешнего набора.
- inner
- DbExpression
DbExpression, указывающий аргумент внутреннего набора.
- outerKey
- Func<DbExpression,DbExpression>
Метод, указывающий способ получения значения внешнего ключа из элемента внешнего набора.
- innerKey
- Func<DbExpression,DbExpression>
Метод, указывающий способ получения значения внутреннего ключа из элемента внутреннего набора.
Возвращаемое значение
Выражение DbJoinExpression создается с помощью класса DbExpressionKind InnerJoin, который представляет операцию внутреннего соединения, применяемую к левому и правому входным наборам в условии соединения, сравнивающего значения внешних и внутренних ключей на равенство.
Исключения
Параметры outer
, inner
, outerKey
или innerKey
имеют значение NULL.
-или-
Выражение, созданное outerKey
или innerKey
, имеет значение NULL.
outer
или inner
не имеет типа результата коллекции.
-или-
Для выражений, созданных outerKey
и innerKey
, равенство не сравнивается.
Применяется к
Join<TSelector>(DbExpression, DbExpression, Func<DbExpression, DbExpression>, Func<DbExpression,DbExpression>, Func<DbExpression, DbExpression,TSelector>)
Создает новый DbProjectExpression, который проецирует указанный селектор на наборы, заданные внешними и внутренними выражениями, соединенными условием равенства между указанными внешними и внутренними ключами, с помощью InnerJoin как DbExpressionKind.
public:
generic <typename TSelector>
[System::Runtime::CompilerServices::Extension]
static System::Data::Common::CommandTrees::DbProjectExpression ^ Join(System::Data::Common::CommandTrees::DbExpression ^ outer, System::Data::Common::CommandTrees::DbExpression ^ inner, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ outerKey, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^> ^ innerKey, Func<System::Data::Common::CommandTrees::DbExpression ^, System::Data::Common::CommandTrees::DbExpression ^, TSelector> ^ selector);
public static System.Data.Common.CommandTrees.DbProjectExpression Join<TSelector> (this System.Data.Common.CommandTrees.DbExpression outer, System.Data.Common.CommandTrees.DbExpression inner, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> outerKey, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression> innerKey, Func<System.Data.Common.CommandTrees.DbExpression,System.Data.Common.CommandTrees.DbExpression,TSelector> selector);
static member Join : System.Data.Common.CommandTrees.DbExpression * System.Data.Common.CommandTrees.DbExpression * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression> * Func<System.Data.Common.CommandTrees.DbExpression, System.Data.Common.CommandTrees.DbExpression, 'Selector> -> System.Data.Common.CommandTrees.DbProjectExpression
<Extension()>
Public Function Join(Of TSelector) (outer As DbExpression, inner As DbExpression, outerKey As Func(Of DbExpression, DbExpression), innerKey As Func(Of DbExpression, DbExpression), selector As Func(Of DbExpression, DbExpression, TSelector)) As DbProjectExpression
Параметры типа
- TSelector
Тип selector
.
Параметры
- outer
- DbExpression
DbExpression, указывающий аргумент внешнего набора.
- inner
- DbExpression
DbExpression, указывающий аргумент внутреннего набора.
- outerKey
- Func<DbExpression,DbExpression>
Метод, указывающий способ получения значения внешнего ключа из элемента внешнего набора.
- innerKey
- Func<DbExpression,DbExpression>
Метод, указывающий способ получения значения внутреннего ключа из элемента внутреннего набора.
- selector
- Func<DbExpression,DbExpression,TSelector>
Метод, указывающий способ получения элемента результирующего набора из элементов внутреннего и внешнего наборов. Этот метод должен создать экземпляр типа, совместимого с Join и с возможностью разрешения в DbExpression. Требования к совместимости TSelector
приведены в примечаниях.
Возвращаемое значение
Новое выражение DbProjectExpression с указанным селектором в качестве его проекции и новым выражением DbJoinExpression качестве входных данных. Входное выражение DbJoinExpression создается с помощью DbExpressionKind InnerJoin, который представляет операцию внутреннего соединения, применяемую к левому и правому входным наборам в условии соединения, сравнивающего значения внешних и внутренних ключей на равенство.
Исключения
outer
, inner
, outerKey
innerKey
или selector
имеет значение NULL.
-или-
Выражение, созданное outerKey
или innerKey
, имеет значение NULL.
-или-
Результат selector
имеет значение NULL после преобразования в DbExpression.
outer
или inner
не имеет типа результата коллекции.
-или-
Выражения, созданные outerKey
и innerKey
, не сравниваются на равенство.
-или-
Результат selector
несовместим с SelectMany.
Комментарии
Для совместимости с Join TSelector
должен быть производным от DbExpressionили быть анонимным типом со свойствами, производными от DbExpression. Ниже приведены примеры поддерживаемых типов для TSelector
:
outer.Join(inner, o => o.Property("ID"), i => i.Property("ID"), (o, i) => o.Property("Name"))
(TSelector
имеет значение DbPropertyExpression).
outer.Join(inner, o => o.Property("ID"), i => i.Property("ID"), (o, i) => new { OName = o.Property("Name"), IName = i.Property("Name") })
(TSelector
является анонимным типом со свойствами, производными от DbExpression).