Skip to content
FreeSql 官方文档FreeSql 官方文档
指南
扩展
服务支持
github icon
  • 指南

      • 查询
        • 分页查询
          • 每页 20 条数据,查询第 1 页
            • 优化
              • API
              • 单表查询
                • 多表查询
                  • 分组聚合
                    • 返回数据 ✨
                      • 延时加载
                        • 贪婪加载 ✨
                          • LinqToSql
                            • WithSql
                              • 树型查询 ✨
                              • DB First
                                • 表达式函数
                                  • 事务
                                    • 过滤器
                                      • ADO
                                        • AOP✨
                                          • 读写分离
                                            • 分表分库
                                              • 多租户
                                                • 性能
                                                  • 你不知道的功能 ✨

                                                  分页查询

                                                  author iconnicyecalendar icon2021年2月5日timer icon大约 2 分钟word icon约 472 字

                                                  此页内容
                                                  • 每页 20 条数据,查询第 1 页
                                                  • 优化
                                                  • API

                                                  # 分页查询

                                                  static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
                                                      .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10")
                                                      .Build(); //请务必定义成 Singleton 单例模式
                                                  
                                                  class Topic {
                                                      [Column(IsIdentity = true)]
                                                      public int Id { get; set; }
                                                      public string Title { get; set; }
                                                      public int Clicks { get; set; }
                                                      public DateTime CreateTime { get; set; }
                                                  
                                                      public int CategoryId { get; set; }
                                                  }
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8
                                                  9
                                                  10
                                                  11
                                                  12
                                                  13

                                                  # 每页 20 条数据,查询第 1 页

                                                  var list = fsql.Select<Topic>()
                                                      .Where(a => a.Id > 10)
                                                      .Count(out var total) //总记录数量
                                                      .Page(1, 20)
                                                      .Tolist();
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5

                                                  注意: 上述例子是对单表进行的查询。如果您正在对多表进行查询,必须要在 Count 之前先进行排序,防止出现不可理解的分页情况。当然,即使是单表,为了防止让分页的次序明确,也建议先排序。

                                                  var list = fsql.Select<Topic>()
                                                      .Where(a => a.Id > 10)
                                                      .OrderBy(a => a.MsgTime)
                                                      .Count(out var total) //总记录数量
                                                      .Page(1, 20)
                                                      .Tolist();
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6

                                                  # 优化

                                                  SqlServer 2012 以前的版本,使用 row_number 分页;

                                                  SqlServer 2012+ 版本,使用最新的 fetch next rows 分页;

                                                  # API

                                                  方法返回值参数描述
                                                  ToSqlstring返回即将执行的 SQL 语句
                                                  ToListList<T1>执行 SQL 查询,返回 T1 实体所有字段的记录,若存在导航属性则一起查询返回,记录不存在时返回 Count 为 0 的列表
                                                  ToList<T>List<T>Lambda执行 SQL 查询,返回指定字段的记录,记录不存在时返回 Count 为 0 的列表
                                                  ToList<T>List<T>string field执行 SQL 查询,返回 field 指定字段的记录,并以元组或基础类型(int,string,long)接收,记录不存在时返回 Count 为 0 的列表
                                                  【分页】
                                                  Countlong查询的记录数量
                                                  Count<this>out long查询的记录数量,以参数 out 形式返回
                                                  Skip<this>int offset查询向后偏移行数
                                                  Offset<this>int offset查询向后偏移行数
                                                  Limit<this>int limit查询多少条数据
                                                  Take<this>int limit查询多少条数据
                                                  Page<this>int pageIndex, int pageSize分页
                                                  edit icon在 GitHub 上编辑此页open in new window
                                                  上次编辑于: 2022/5/16 下午8:50:28
                                                  贡献者: igeekfan,luoyunchong,暗影灰蝶
                                                  上一页
                                                  查询
                                                  下一页
                                                  单表查询
                                                  Copyright © 2018-present nicye
                                                  Copyright © 2022 nicye

                                                  该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。

                                                  详情