public static IJoinBigQueryable <TResult> Join <TOuter, TInner, TResult>(this IJoinBigQueryable <TOuter> source, JoinType joinType, IFlattenBigQueryable <TInner> joinTable, Expression <Func <TOuter, TInner, TResult> > aliasSelector, Expression <Func <TResult, bool> > joinCondition) { if (source == null) { throw new ArgumentNullException("source"); } var tb = joinTable as ITableName; if (tb == null) { var flatten = joinTable as IFlattenBigQueryable <TInner>; if (flatten == null) { throw new ArgumentException("not supports joinTable Type:" + joinTable.GetType()); } else { return(new JoinBigQueryable <TOuter, TInner, TResult>(source, (InternalJoinType)joinType, null, null, flatten, aliasSelector, joinCondition)); } } return(new JoinBigQueryable <TOuter, TInner, TResult>(source, (InternalJoinType)joinType, tb.GetTableName(), null, null, aliasSelector, joinCondition)); }
public static IJoinBigQueryable <TResult> Join <TOuter, TInner, TResult>(this IJoinBigQueryable <TOuter> source, IExecutableBigQueryable <TInner> joinTable, Expression <Func <TOuter, TInner, TResult> > aliasSelector, Expression <Func <TResult, bool> > joinCondition) { if (source == null) { throw new ArgumentNullException("source"); } return(new JoinBigQueryable <TOuter, TInner, TResult>(source, InternalJoinType.Inner, null, joinTable, null, aliasSelector, joinCondition)); }
public static IJoinBigQueryable <TResult> JoinCross <TOuter, TInner, TResult>(this IJoinBigQueryable <TOuter> source, IExecutableBigQueryable <TInner> joinTable, Expression <Func <TOuter, TInner, TResult> > aliasSelector, bool each = false) { if (source == null) { throw new ArgumentNullException("source"); } return(new JoinBigQueryable <TOuter, TInner, TResult>(source, (each ? InternalJoinType.CrossEach : InternalJoinType.Cross), null, joinTable, null, aliasSelector, null)); }