public SqlExp <T2> JoinSubQuery <T2, TKey>(Action <SqlExp <T2> > action, Expression <Func <T, T2, bool> > expression, JoinType joinType = JoinType.Join) { var joinQuery = new SqlExp <T2>(this._adapter); action?.Invoke(joinQuery); _resolver.JoinSubQuery(joinQuery, expression, joinType); this._childSqlExps.Add(joinQuery); return(joinQuery); }
public SqlExp <T2> InnerJoin <T2, TKey>(Action <SqlExp <T2> > joinQuery, Expression <Func <T, TKey> > primaryKeySelector, Expression <Func <T2, TKey> > foreignKeySelector, params Expression <Func <T2, object> >[] selections) { var query = new SqlExp <T2>(_builder, _resolver); joinQuery?.Invoke(query); query.Select(selections); _resolver.Join <T, T2, TKey>(primaryKeySelector, foreignKeySelector, JoinType.InnerJoin); return(query); }
public SqlExp <T2> SubQuery <T2>(SqlExp <T2> subQuery) { var aliasTname = $"q_" + EnvHelper.GetRandomString(6, true, true, false); //$"query_" + DateTime.Now.Ticks; JoinSubAliasTableName = aliasTname; subQuery.JoinSubAliasTableName = aliasTname; this._childSqlExps.Add(subQuery); _resolver.SubQuery <T2>(subQuery); // query.Select(selections); return(subQuery); }
public SqlExp <T2> SubQuery <T2>(SqlExp <T2> subQuery) { var aliasTname = $"query_" + DateTime.Now.Ticks; JoinSubAliasTableName = aliasTname; subQuery.JoinSubAliasTableName = aliasTname; this._childSqlExps.Add(subQuery); _resolver.SubQuery <T2>(subQuery); // query.Select(selections); return(subQuery); }
public SqlExp <T2> JoinSubQuery <T2, TKey>(Action <SqlExp <T2> > joinQuery, Expression <Func <T, TKey> > primaryKeySelector, Expression <Func <T2, TKey> > foreignKeySelector, JoinType joinType = JoinType.Join, params Expression <Func <T2, object> >[] selections) { var query = new SqlExp <T2>(_adapter); joinQuery?.Invoke(query); _resolver.JoinSubQuery <T, T2, TKey>(query, primaryKeySelector, foreignKeySelector, joinType); // query.Select(selections); this._childSqlExps.Add(query); this.SelectSubQuery(query, selections); return(query); }
public SqlExp <T> CountSubQuery <TSub>(SqlExp <TSub> subExp, string aliasName = "count") { _resolver.SelectWithFunction <T>(null, SelectFunction.COUNT, aliasName, subExp.JoinSubAliasTableName); return(this); }
public SqlExp <T> CountSubQuery <TSub>(SqlExp <TSub> subExp, Expression <Func <T, object> > expression) { _resolver.SelectWithFunctionSubQuery <T, TSub>(expression, SelectFunction.COUNT, null, subExp.JoinSubAliasTableName); return(this); }
//public SqlExp<T> Count<TSub>(SqlExpBase subExp,Expression<Func<T, object>> expression, Expression<Func<TSub, object>> aliasProp) //{ // _resolver.SelectWithFunctionSubQuery<T, TSub>(expression, SelectFunction.COUNT, aliasProp,subExp.JoinSubAliasTableName); // return this; //} //public SqlExp<T> Count(string aliasName = "count") //{ // _resolver.SelectWithFunction<T>(null, SelectFunction.COUNT, aliasName); // return this; //} //public SqlExp<T> Count<TResult>(SqlExp<TResult> subExp,string aliasName = "count") //{ // _resolver.SelectWithFunction<T>(null, SelectFunction.COUNT, aliasName,subExp.JoinSubAliasTableName); // return this; //} public SqlExp <T> CountSubQuery <TResult>(SqlExp <T> subExp, Expression <Func <T, object> > expression, Expression <Func <TResult, object> > aliasProp) { _resolver.SelectWithFunctionSubQuery <T, TResult>(expression, SelectFunction.COUNT, aliasProp, subExp.JoinSubAliasTableName); return(this); }