コード例 #1
0
        public ExeResEdm GetListByPage(string tableName, PageSerach <T> para)
        {
            var orderByStr = LambdaToSqlHelper <T> .GetSqlFromLambda(para.OrderBy).OrderbySql;

            string whereSql = !string.IsNullOrEmpty(para.StrWhere) ? para.StrWhere : LambdaToSqlHelper <T> .GetWhereFromLambda(para.Filter, DataBaseType.NoSelect);

            SearchParam searchParam = new SearchParam()
            {
                Orderby = orderByStr, PageIndex = para.PageIndex, PageSize = para.PageSize, TableName = tableName, StrWhere = whereSql,
            };
            ExeResEdm res = GetDTByPage(searchParam);

            para.StrWhere = whereSql;
            if (res.ErrCode == 0)
            {
                List <T> list = DtModelConvert <T> .DatatableToList((res.ExeModel as DataTable));

                res.ExeModel = list.AsQueryable();
                return(res);
            }
            else
            {
                return(res);
            }
        }
コード例 #2
0
ファイル: AdoNetBase.cs プロジェクト: MarkTang/LogORM
        public ExeResEdm GetListByPage(string tableName, PageSerach <T> para, DBOperUser dbLogMsg = null)
        {
            var orderByStr = LambdaToSqlHelper <T> .GetSqlFromLambda(para.OrderBy).OrderbySql;

            string whereSql = !string.IsNullOrEmpty(para.StrWhere) ? para.StrWhere : LambdaToSqlHelper <T> .GetWhereFromLambda(para.Filter, DBStoreType.NoSelect);

            SearchParam searchParam = new SearchParam()
            {
                Orderby = orderByStr, PageIndex = para.PageIndex, PageSize = para.PageSize, TableName = tableName, StrWhere = whereSql,
            };
            ExeResEdm res    = GetDTByPage(searchParam);
            int       curNum = 0;

            if (res.ErrCode == 0)
            {
                List <T> list = DtModelConvert <T> .DatatableToList((res.ExeModel as DataTable));

                res.ExeModel = list.AsQueryable();
                curNum       = list.Count();
                res.ExeNum   = searchParam.TotalCount;
            }
            WriteLogMsg(dbLogMsg, LogType.查询, "根据[" + DtModelConvert <T> .SerializeToString(searchParam) + "]获取了分页数据,返回了"
                        + curNum + "/" + searchParam.TotalCount + "条记录", tableName);
            return(res);
        }
コード例 #3
0
        /// <summary>
        /// 查询 list
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="unitOfWork"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static async Task <List <T> > Query <T>(IUnitOfWork unitOfWork, Expression <Func <T, bool> > whereLambda, SqlQuery sql = null) where T : class
        {
            var db = unitOfWork.DbConnection;

            if (sql == null)
            {
                sql = SqlQuery <T> .Builder(unitOfWork);
            }
            sql._Sql = new StringBuilder(LambdaToSqlHelper <T> .GetWhereByLambda(whereLambda, unitOfWork.DbType));
            var result = await db.QueryAsync <T>(sql.QuerySql, sql.Param);

            return(result.ToList());
        }
コード例 #4
0
        public static async Task <DataTable> QueryDataTable <T>(IUnitOfWork unitOfWork, Expression <Func <T, bool> > whereLambda, SqlQuery sql = null) where T : class
        {
            var db = unitOfWork.DbConnection;

            if (sql == null)
            {
                sql = SqlQuery <T> .Builder(unitOfWork);
            }
            sql._Sql = new StringBuilder(LambdaToSqlHelper <T> .GetWhereByLambda(whereLambda, unitOfWork.DbType));
            DataTable dataTable = new DataTable();
            var       result    = await unitOfWork.DbConnection.ExecuteReaderAsync(sql.QuerySql, sql.Param);

            dataTable.Load(result);
            return(dataTable);
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="unitOfWork"></param>
        /// <param name="whereLambda"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static async Task <T> SingleOrDefault <T>(IUnitOfWork unitOfWork, Expression <Func <T, bool> > whereLambda, SqlQuery sql = null) where T : class
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            var db = unitOfWork.DbConnection;

            if (sql == null)
            {
                sql = SqlQuery <T> .Builder(unitOfWork);
            }
            sql._Sql = new StringBuilder(LambdaToSqlHelper <T> .GetWhereByLambda(whereLambda, unitOfWork.DbType));
            var result = await db.QueryFirstOrDefaultAsync <T>(sql.QuerySql);

            return(result);
        }
コード例 #6
0
        /// <summary>
        /// 删除
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="unitOfWork"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static async Task <int> Delete <T>(IUnitOfWork unitOfWork, Expression <Func <T, bool> > whereLambda, SqlQuery sql = null) where T : class
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            var db = unitOfWork.DbConnection;

            if (sql == null)
            {
                sql = SqlQuery <T> .Builder(unitOfWork);
            }
            sql._Sql = new StringBuilder(LambdaToSqlHelper <T> .GetWhereByLambda(whereLambda, unitOfWork.DbType));
            var result = await db.ExecuteAsync(sql.DeleteSql, sql.Param);

            stopwatch.Stop();
            return(result);
        }
コード例 #7
0
        static void Main(string[] args)
        {
            /*
             * Expression<Func<Person, bool>> expression = p => p.Name == "张三" && p.Name != "李四";
             * MyVisitor myVisitor = new MyVisitor();
             * myVisitor.Visit(expression);
             * Console.WriteLine(myVisitor.GetSqlString());
             */
            Expression <Func <Person, bool> > expression = p => p.Name == "张三" && p.Name != "李四";

            Console.WriteLine(LambdaToSqlHelper.GetSqlFromExpression(expression));

            /*
             * var data = new List<ScoreClass>
             * {
             *  new ScoreClass {CourseName = "数学", StudentName = "学生A", Score = 60},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生B", Score = 65},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生C", Score = 70},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生D", Score = 75},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生E", Score = 80},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生F", Score = 81},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生G", Score = 82},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生H", Score = 83},
             *  new ScoreClass {CourseName = "数学", StudentName = "学生I", Score = 84}
             * };
             * // 按照Score降序排序取第一个(5条数据)
             * var page = new PageRequest()
             * {
             *  Direction = "desc",
             *  PageIndex = 1,
             *  PageSize = 5,
             *  SortBy = "Score"
             * };
             * var result = Pagination.DataPagination(data.AsQueryable(), page);
             *
             * Console.WriteLine($"分页结果:\n{string.Join("\n", result.Items.Select(e => $"{e.StudentName} {e.CourseName} {e.Score}"))}");
             */
        }