Paged queries
SQLBuilder
Always specify orderby for paging; otherwise order can be unstable or duplicated.
TIP
With ROW_NUMBER paging, SQL looks like: with tmp as ( select row_number() over( partition by ... order by ... ) as rowm,.... ) select * from tmp where rowm> ... order by ... So ORDER BY may appear on the outer query and differ from non-paged queries.
c#
var dt = kit.select("a.ZH_DangerAreaOID,a.SYS_Created")
.from("ZH_DangerArea a")
.where("(a.SYS_Deleted is null or a.SYS_Deleted=0)")
.setPage(pageSize,pageNum)
.rowNumber("DA_Idx","rowm")
.orderby("rowm asc")
.query();New (2025+): when only orderby is set, window paging reuses that order for sorting—no extra rowNumber sort needed.
c#
var dt = kit.select("a.ZH_DangerAreaOID,a.SYS_Created")
.from("ZH_DangerArea a")
.where("(a.SYS_Deleted is null or a.SYS_Deleted=0)")
.setPage(pageSize,pageNum)
.orderby("DA_Idx","rowm")
.query();TIP
For efficiency, configure the database version in connection settings; the library picks the best paging SQL for that version.
json
{
"Position": 9,
"Name": "Master",
"DbType": "MSSQL",
"ConnectString": "Enlist=false;Data Source=137.12.*.*;Database=******;User Id=****;Password=****;Encrypt=True;TrustServerCertificate=True;",
"Version": "13.0"
}Repository
Paged list with Clip-based filters:
c#
var res=Rep.GetPageList(input.Page, input.PageSize, (c, d) => {
c.where(()=>d.CreateTime,input.StartTime,">=")
.where(()=>d.CreateTime,input.EndTime,"<=")
.orderByDesc(()=>d.CreateTime);
});SQLClip
c#
var clip = DBCash.useClip(0);
var tar = clip.from<HHDutyItem>(out var d)
.where(() => d.Di_Idx, 1)
.select(d)
.setPage(50, 1)
.queryPage();