Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        /// <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]);
        }