DbExpressionBuilder.Join<TSelector> 方法 (DbExpression, DbExpression, Func<DbExpression, DbExpression>, Func<DbExpression, DbExpression>, Func<DbExpression, DbExpression, TSelector>)
[此頁面專屬於 Entity Framework 第 6 版。最新版本可從 'Entity Framework' NuGet 套件取得。如需 Entity Framework 的詳細資訊,請參閱 msdn.com/data/ef。]
使用 InnerJoin 做為 DbExpressionKind,建立新的 DbProjectExpression,它會將指定的選擇器投射在內外部運算式所指定的集合,這裡的內外部運算式是依據指定內外部索引鍵間的相等條件而聯結的。
命名空間: 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
選擇器的類型。
參數
- outer
類型:System.Data.Entity.Core.Common.CommandTrees.DbExpression
指定外部集合引數的 DbExpression。
- inner
類型:System.Data.Entity.Core.Common.CommandTrees.DbExpression
指定內部集合引數的 DbExpression。
- outerKey
類型:System.Func<DbExpression, DbExpression>
方法,指定外部索引鍵值要如何衍生自外部集合項目。
- innerKey
類型:System.Func<DbExpression, DbExpression>
方法,指定內部索引鍵值要如何衍生自內部集合項目。
- selector
類型:System.Func<DbExpression, DbExpression, TSelector>
方法,指定結果集項目要如何衍生自內外部集合項目。 此方法所產生的類型執行個體,必須與 Join 相容並且可以解析成 DbExpression。 TSelector 的相容性需求已在備註中說明。
傳回值
類型:System.Data.Entity.Core.Common.CommandTrees.DbProjectExpression
以指定選取器做為投影而以新 DbJoinExpression 做為其輸入的新 DbProjectExpression。輸入 DbJoinExpression 是以 InnerJoin 的 DbExpressionKind 建立而成,表示在比較外部與內部索引鍵值是否相等的聯結條件下套用至左方和右方輸入集合的內部聯結作業。
使用注意事項
在 Visual Basic 和 C# 中,您可以在任何 DbExpression 類型物件中呼叫這個方法以做為執行個體。使用執行個體方法語法呼叫這個方法時,請省略第一個參數。如需詳細資訊,請參閱 https://msdn.microsoft.com/zh-tw/library/bb384936(v=vs.113)或 https://msdn.microsoft.com/zh-tw/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 => o.Property("ID"), i => i.Property("ID"), (o, i) => o.Property("Name"))</code> (<typeparamref name="TSelector" /> 是 DbPropertyExpression)。 <code>outer.Join(inner, o => o.Property("ID"), i => i.Property("ID"), (o, i) => new { OName = o.Property("Name"), IName = i.Property("Name") })</code> ( <typeparamref name="TSelector" /> 是具有 DbExpression 衍生屬性的匿名類型)。
請參閱
參考
System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder 命名空間