//public TType Sum<TType, TModel>(Expression<Func<TModel, bool>> expression, string field, bool compileSp = false) where TModel : IModel, new() //{ // return GetFunction<TType, TModel>(expression, field, FunctionType.SUM, compileSp); //} #endregion TType GetFunction <TType, TModel>(Expression <Func <TModel, bool> > expression, Expression <Func <TModel, TType> > selectField, FunctionType functionType, bool compileSp = false) where TModel : IModel, new() { LambdaQuery <TModel> query = new LambdaQuery <TModel>(dbContext, true); query.Select(selectField.Body); query.__FieldFunctionFormat = string.Format("{0}({1}) as Total", functionType, "{0}"); query.Where(expression); var result = QueryScalar(query); if (result == null) { return(default(TType)); } return((TType)result); //string condition = query.FormatExpression(expression); //query.FillParames(this); //string field = query.GetQueryFieldString(); //CheckTableCreated<TModel>(); //string tableName = TypeCache.GetTableName(typeof(TModel), dbContext); //tableName = _DBAdapter.KeyWordFormat(tableName); //string sql = "select " + functionType + "(" + field + ") from " + tableName + ' ' + _DBAdapter.GetWithNolockFormat() + " where " + condition; //if (compileSp) //{ // return AutoExecuteScalar<TType>(sql); //} //return ExecScalar<TType>(sql); }
/// <summary> /// 使用lamada设置条件查询 /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="expression"></param> /// <param name="compileSp">是否编译成储过程</param> /// <returns></returns> public List <TItem> QueryList <TItem>(Expression <Func <TItem, bool> > expression = null, bool compileSp = false) where TItem : IModel, new() { LambdaQuery <TItem> query = new LambdaQuery <TItem>(dbContext); query.Where(expression); query.CompileToSp(compileSp); return(QueryList <TItem>(query)); }
/// <summary> /// 使用lamada设置条件查询 /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="expression"></param> /// <param name="compileSp">是否编译成储过程</param> /// <returns></returns> public List <TItem> QueryList <TItem>(Expression <Func <TItem, bool> > expression = null, bool compileSp = false) where TItem : IModel, new() { LambdaQuery <TItem> query = new LambdaQuery <TItem>(this); query.Where(expression); string key; return(QueryList <TItem>(query, 0, out key, compileSp)); }
/// <summary> /// 查询返回单个结果 /// 如果只查询ID,调用QueryItem(id) /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="expression"></param> /// <param name="idDest">是否按主键倒序</param> /// <param name="compileSp">是否编译成存储过程</param> /// <returns></returns> public TItem QueryItem <TItem>(Expression <Func <TItem, bool> > expression, bool idDest = true, bool compileSp = false) where TItem : IModel, new() { LambdaQuery <TItem> query = new LambdaQuery <TItem>(this); query.Top(1); query.Where(expression); query.OrderByPrimaryKey(idDest); List <TItem> list = QueryList <TItem>(query, 0, compileSp); if (list.Count == 0) { return(null); } return(list[0]); }