• Entity Framework 第六篇 分页查询


    目前分页支持单表

    public IList<TEntity> GetPaged<TEntity>(out int total, Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, int index = 1, int size = 20) where TEntity : class
            {
                int skipCount = (index - 1) * size;
                var _reset = Get(filter, orderBy);
                total = _reset.Count();
                _reset = skipCount > 0 ? _reset.Skip(skipCount).Take(size) : _reset.Take(size);
                return _reset.ToList();
            }
    
            public IQueryable<TEntity> Get<TEntity>(Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null) where TEntity : class
            {
                IQueryable<TEntity> query = dbContext.Set<TEntity>();
                if (filter != null)
                {
                    query = query.Where(filter);
                }
                if (orderBy != null)
                {
                    return orderBy(query).AsQueryable();
                }
                else
                {
                    return query.AsQueryable();
                }
            }

    使用

     int count;
                var a = respository.GetPaged<S_Users>(out count, m => m.LoginName.Contains("a"), q => q.OrderBy(m => m.LastDate),1, 20);

    是不是很方便?

    如何多个排序条件?

    var a = respository.GetPaged<S_Users>(out count, m => m.LoginName.Contains("a"), q => q.OrderBy(m => m.LastDate).ThenByDescending(m=>m.LoginNum),1, 20);

    最后跟踪看一下映射出来的SQL是什么样的?

    SELECT 
        [GroupBy1].[A1] AS [C1]
        FROM ( SELECT 
            COUNT([Limit1].[C1]) AS [A1]
            FROM ( SELECT TOP (20) [Project1].[C1] AS [C1]
                FROM ( SELECT 
                    1 AS [C1], 
                    [Extent1].[LastDate] AS [LastDate]
                    FROM [dbo].[S_Users] AS [Extent1]
                    WHERE [Extent1].[LoginName] LIKE N'%a%'
                )  AS [Project1]
                ORDER BY [Project1].[LastDate] ASC
            )  AS [Limit1]
        )  AS [GroupBy1]
    
    
    SELECT TOP (20) 
        [Extent1].[UserID] AS [UserID], 
        [Extent1].[LoginName] AS [LoginName], 
        [Extent1].[Password] AS [Password], 
        [Extent1].[UserName] AS [UserName], 
        [Extent1].[UserType] AS [UserType], 
        [Extent1].[Tel] AS [Tel], 
        [Extent1].[CreateDate] AS [CreateDate], 
        [Extent1].[LoginNum] AS [LoginNum], 
        [Extent1].[LastDate] AS [LastDate], 
        [Extent1].[ShopID] AS [ShopID]
        FROM [dbo].[S_Users] AS [Extent1]
        WHERE [Extent1].[LoginName] LIKE N'%a%'
        ORDER BY [Extent1].[LoginName] ASC, [Extent1].[LoginNum] DESC
  • 相关阅读:
    Hadoop-CDH源码编译
    HBase框架基础(四)
    HBase框架基础(三)
    Scala基础简述
    HBase框架基础(一)
    NOI2015 软件包管理器
    可持久化数据结构入门
    树链剖分 入门
    NOIP2009 最优贸易
    高斯消元 模板
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5584081.html
Copyright © 2020-2023  润新知