DbExpressionBuilder.Join<TSelector> 方法 (DbExpression, DbExpression, Func<DbExpression, DbExpression>, Func<DbExpression, DbExpression>, Func<DbExpression, DbExpression, TSelector>)

[本页针对的是实体框架版本 6。最新版本以“实体框架”NuGet 包的形式提供。有关实体框架的更多信息,请参见 msdn.com/data/ef。]

创建一个新的 DbProjectExpression,它对外部和内部表达式指定的集投影指定的选择器,基于指定的外部键和内部键之间的相等条件进行联接,并且使用 InnerJoin 作为 DbExpressionKind

命名空间:  System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder
程序集:  EntityFramework(在 EntityFramework.dll 中)

语法

声明
<ExtensionAttribute> _
Public Shared 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
用法
Dim outer As DbExpression 
Dim inner As DbExpression 
Dim outerKey As Func(Of DbExpression, DbExpression)
Dim innerKey As Func(Of DbExpression, DbExpression)
Dim selector As Func(Of DbExpression, DbExpression, TSelector)
Dim returnValue As DbProjectExpression 

returnValue = outer.Join(inner, outerKey, _
    innerKey, selector)
public static DbProjectExpression Join<TSelector>(
    this DbExpression outer,
    DbExpression inner,
    Func<DbExpression, DbExpression> outerKey,
    Func<DbExpression, DbExpression> innerKey,
    Func<DbExpression, DbExpression, TSelector> selector
)
[ExtensionAttribute]
public:
generic<typename TSelector>
static DbProjectExpression^ Join(
    DbExpression^ outer, 
    DbExpression^ inner, 
    Func<DbExpression^, DbExpression^>^ outerKey, 
    Func<DbExpression^, DbExpression^>^ innerKey, 
    Func<DbExpression^, DbExpression^, TSelector>^ selector
)
static member Join : 
        outer:DbExpression * 
        inner:DbExpression * 
        outerKey:Func<DbExpression, DbExpression> * 
        innerKey:Func<DbExpression, DbExpression> * 
        selector:Func<DbExpression, DbExpression, 'TSelector> -> DbProjectExpression
JScript does not support generic types and methods.

类型参数

  • TSelector
    选择器的类型。

参数

  • selector
    类型:System.Func<DbExpression, DbExpression, TSelector>
    一个方法,它指定如何从内部和外部集的元素派生结果集的元素。 此方法必须生成与 Join 兼容且可以解析为 DbExpression 的类型的实例。 备注中说明了针对 TSelector 的兼容性要求。

返回值

类型:System.Data.Entity.Core.Common.CommandTrees.DbProjectExpression
一个新的 DbProjectExpression,它使用指定的选择器作为其投影并且使用一个新的 DbJoinExpression 作为其输入。输入 DbJoinExpression 是使用 InnerJoin 的 DbExpressionKind 创建的,它表示基于比较外部键值和内部键值是否相等的联接条件应用于左边输入集和右边输入集的内部联接运算。

使用说明

在 Visual Basic 和 C# 中,可以在 DbExpression 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时,请省略第一个参数。有关详细信息,请参阅https://msdn.microsoft.com/zh-cn/library/bb384936(v=vs.113)https://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.113)

异常

例外 条件
ArgumentNullException

outer、inner、outerKey、innerKey 或 selector 为 null。

ArgumentException

outer 或 inner 没有集合结果类型。

ArgumentNullException

由 outerKey 或 innerKey 生成的表达式为 null。

ArgumentNullException

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

ArgumentException

outerKey 和 innerKey 生成的表达式不能比较是否相等。

ArgumentException

selector 的结果与 SelectMany 不兼容。

备注

若要与 Join 兼容,TSelector 必须从 DbExpression 派生,或者必须是具有 DbExpression 派生的属性的匿名类型。 以下是 TSelector 支持的类型的示例:<code>outer.Join(inner, o =&gt; o.Property("ID"), i =&gt; i.Property("ID"), (o, i) =&gt; o.Property("Name"))</code>(<typeparamref name="TSelector" /> 是 DbPropertyExpression)。 <code>outer.Join(inner, o =&gt; o.Property("ID"), i =&gt; i.Property("ID"), (o, i) =&gt; new { OName = o.Property("Name"), IName = i.Property("Name") })</code>(<typeparamref name="TSelector" /> 是具有 DbExpression 派生的属性的匿名类型)。

请参阅

参考

DbExpressionBuilder 类

Join 重载

System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder 命名空间