public TResult Sum <TResult>(Expression <Func <T, TResult> > sumExpression) { SqlProvider.FormatSum(sumExpression); SetSql(); var result = DbCon.QuerySingle <TResult>(SqlProvider.SqlString, SqlProvider.Params); return(result); }
public async Task <TResult> SumAsync <TResult>(Expression <Func <T, TResult> > sumExpression) { SqlProvider.FormatSum(sumExpression); SetSql(); var result = await DbCon.QuerySingleAsync <TResult>(SqlProvider.SqlString, SqlProvider.Params); return(result); }
/// <summary> /// 反射执行需要指向T类型的函数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sqlProvider"></param> /// <param name="methodName"></param> public void FormatSend <T>(SqlProvider sqlProvider, string methodName) { switch (methodName) { case "Count": { sqlProvider.FormatCount(); } break; case "Sum": { var lambda = this.expression.Arguments[0].GetLambdaExpression(); sqlProvider.FormatSum(lambda); } break; case "Get": { //加上自定义实体返回 var lambda = this.expression.Arguments[0].GetLambdaExpression(); this.ReturnType = lambda.ReturnType; sqlProvider.Context.Set.SelectExpression = lambda; sqlProvider.FormatGet <T>(); } break; case "ToList": { //加上自定义实体返回 var lambda = this.expression.Arguments[0].GetLambdaExpression(); this.ReturnType = lambda.ReturnType; sqlProvider.Context.Set.SelectExpression = lambda; sqlProvider.FormatToList <T>(); } break; default: throw new DapperExtensionException("the expression is no support this function"); } //得到解析的sql和param对象 string sql = sqlProvider.SqlString; var param = ToSubqueryParam(sqlProvider.Params, ref sql); _sqlCmd.Append(sql); this.Param.AddDynamicParams(param); }
/// <inheritdoc /> public TResult Sum <TResult>(Expression <Func <T, TResult> > sumExpression) { SqlProvider.FormatSum(sumExpression); return(DbCon.QuerySingleOrDefault <TResult>(SqlProvider.SqlString, SqlProvider.Params, dbTransaction)); }
/// <summary> /// 反射执行需要指向T类型的函数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sqlProvider"></param> /// <param name="methodName"></param> public void FormatSend <T>(QuerySet <T> querySet, string methodName) { SqlProvider sqlProvider = querySet.SqlProvider; //写入重新生成后的条件 if (WhereExpression != null && WhereExpression.Any()) { querySet.WhereExpressionList.AddRange(WhereExpression); } //因为表达式的原因,递归获取连表默认会倒序 if (sqlProvider.JoinList.Any()) { sqlProvider.JoinList.Reverse(); } switch (methodName) { case "Count": { sqlProvider.FormatCount(); } break; case "Sum": { var lambda = this.expression.Arguments[0].GetLambdaExpression(); sqlProvider.FormatSum(lambda); } break; case "Min": { var lambda = this.expression.Arguments[0].GetLambdaExpression(); sqlProvider.FormatMin(lambda); } break; case "Max": { var lambda = this.expression.Arguments[0].GetLambdaExpression(); sqlProvider.FormatMax(lambda); } break; case "Get": { LambdaExpression lambda = default(LambdaExpression); if (this.expression.Arguments.Count == 1) { lambda = this.expression.Arguments[0].GetLambdaExpression(); this.ReturnType = lambda.ReturnType; } else if (this.expression.Arguments.Count == 0) //无自定义列表返回 { lambda = null; this.ReturnType = this.expression.Method.ReturnType; } else { //带if判断 if (this.expression.Arguments[0].ToConvertAndGetValue().Equals(true)) { lambda = this.expression.Arguments[1].GetLambdaExpression(); } else { lambda = this.expression.Arguments[2].GetLambdaExpression(); } this.ReturnType = lambda.ReturnType; } sqlProvider.Context.Set.SelectExpression = lambda; sqlProvider.FormatGet <T>(); } break; case "ToList": { LambdaExpression lambda = default(LambdaExpression); if (this.expression.Arguments.Count == 1) { lambda = this.expression.Arguments[0].GetLambdaExpression(); this.ReturnType = lambda.ReturnType; } else if (this.expression.Arguments.Count == 0) //无自定义列表返回 { lambda = null; this.ReturnType = this.expression.Method.ReturnType.GenericTypeArguments[0]; } else { //带if判断 if (this.expression.Arguments[0].ToConvertAndGetValue().Equals(true)) { lambda = this.expression.Arguments[1].GetLambdaExpression(); } else { lambda = this.expression.Arguments[2].GetLambdaExpression(); } this.ReturnType = lambda.ReturnType; } sqlProvider.Context.Set.SelectExpression = lambda; sqlProvider.FormatToList <T>(); } break; default: throw new DapperExtensionException("Kogel.Dapper.Extension中子查询不支持的扩展函数"); } //得到解析的sql和param对象 string sql = sqlProvider.SqlString; var param = ToSubqueryParam(sqlProvider.Params, ref sql); _sqlCmd.Append(sql); this.Param.AddDynamicParams(param); }
/// <inheritdoc /> public int Sum <TResult>(Expression <Func <TResult, object> > sumExpression) { SqlProvider.FormatSum(sumExpression); return(DbCon.QuerySingle <int>(SqlProvider.SqlString, SqlProvider.Params)); }
public TResult Sum <TResult>(Expression <Func <T, TResult> > sumExpression) { SqlProvider.FormatSum(sumExpression); SetSql(); return(DbCon.ExecuteScalar <TResult>(SqlProvider.SqlString, SqlProvider.Params)); }
public async Task <TResult> SumAsync <TResult>(Expression <Func <T, TResult> > sumExpression) { SqlProvider.FormatSum(sumExpression); SetSql(); return(await DbCon.ExecuteScalarAsync <TResult>(SqlProvider.SqlString, SqlProvider.Params)); }