zoukankan      html  css  js  c++  java
  • [转]MVC 分页

    本内容代码段抄自传智视频

    /// <summary>
    /// 数据库分页
    /// </summary>
    static List<dynamic> GetPageList<T, TKey>(Expression<Func<T, dynamic>> select, Expression<Func<T, bool>> whereLambda, Expression<Func<T, TKey>> orderLambda, int pageSize, int pageIndex, out int total, bool isAsc)
        where T : class
    {
        StudyDBEntities context = new StudyDBEntities();
        total = context.Set<T>().Where(whereLambda).Count();
        var result = context.Set<T>().Where(whereLambda);
        if (isAsc)
            result = result.OrderBy(orderLambda);
        else
            result = result.OrderByDescending(orderLambda);
        return result.Skip(pageSize * (pageIndex - 1)).Take(pageSize).Select(select).ToList();
    }

    其中 total 返回符合条件的总行数

    result 返回符合条件的数据

    使用:

    int total = 0;
    var list = GetPageList<Student, int>(o => o, o => o.ID > 2, o => o.ID, 5, 5, out total, true);
    ViewData.Model = 实体
        .OrderBy(u => u.UserId)
        .Skip(pageSize * (pageIndex - 1))
        .Take(pageSize)
        .AsEnumerable();

    SQL 生成如下:

    SELECT 
        [GroupBy1].[A1] AS [C1]
        FROM ( SELECT 
            COUNT(1) AS [A1]
            FROM [dbo].[Student] AS [Extent1]
            WHERE [Extent1].[ID] > 2
        )  AS [GroupBy1]
    SELECT TOP (5) 
    [Filter1].[ID] AS [ID], 
    [Filter1].[Name] AS [Name], 
    [Filter1].[Class] AS [Class]
    FROM ( SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name], [Extent1].[Class] AS [Class], 
        row_number() OVER (ORDER BY [Extent1].[ID] ASC) AS [row_number]
        FROM [dbo].[Student] AS [Extent1]
        WHERE [Extent1].[ID] > 2
    )  AS [Filter1]
    WHERE [Filter1].[row_number] > 20
    ORDER BY [Filter1].[ID] ASC
  • 相关阅读:
    第三章:数据结构决定程序
    第二章:Rotate、变位词
    iOS常用宏定义
    去除重复的数据
    iOS开发者一些建设性的建议
    [iOS]应用内支付(内购)的个人开发过程及坑!
    UIDynamic(物理仿真)
    扇形进度
    iOS 之加密方式
    UIPresentationController
  • 原文地址:https://www.cnblogs.com/z5337/p/5260082.html
Copyright © 2011-2022 走看看