Share via


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,带有 InnerJoin 的 DbExpressionKind,这表示在比较外部键值和内部键值是否相等的联接条件下将内部联接运算应用于左输入集和右输入集。

例外

outerinnerouterKeyinnerKey 为 null。

- 或 -

outerKeyinnerKey 生成的表达式为 null。

outerinner 不具有集合结果类型。

- 或 -

无法比较由 outerKeyinnerKey 生成的表达式是否相等。

适用于

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 作为其输入。 使用 InnerJoin 的 DbExpressionKind 来创建输入 DbJoinExpression,这表示在比较外部键值和内部键值是否相等的联接条件下将内部联接运算应用于左输入集和右输入集。

例外

outerinnerouterKeyinnerKeyselector 为 null。

- 或 -

outerKeyinnerKey 生成的表达式为 null。

- 或 -

在转换为 DbExpression 之后,selector 的结果为 null。

outerinner 不具有集合结果类型。

- 或 -

outerKeyinnerKey 生成的表达式无法比较是否相等。

- 或 -

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 派生属性。

适用于