首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Hxj.Data 查詢排序與分組:OrderBy、Asc/Desc、多欄位排序、GroupBy 完整指南

     編輯:關於ASP.NET

分頁預設排序:無 OrderBy 時自動用主鍵

DbSession.Default.From()
    .Page(10, 2)
    .Where(Products._.CategoryID.SelectIn(1,2,3))
    .ToList();

產生 SQL 可見 ORDER BY [Products].[ProductID] ASC(主鍵)。

自訂排序:OrderBy()

.OrderBy(Products._.CategoryID.Asc) // 單欄位升冪

分頁 SQL 將依 CategoryID 排序而非主鍵。

多欄位排序:&& 運算子串聯

.OrderBy(Products._.CategoryID.Asc && Products._.ProductID.Asc)

對應 ORDER BY [CategoryID] ASC, [ProductID] ASC。

Desc 降冪排序

.OrderBy(Products._.UnitPrice.Desc)

分組:GroupBy()

.GroupBy(Products._.CategoryID.GroupBy && Products._.ProductName.GroupBy)

搭配 Select 聚合函數使用(見前篇)。

排序與分頁互動細節

  • 分頁查詢**必須**有確定排序,否則結果不穩定。
  • Hxj.Data 自動為無 OrderBy 的分頁補上主鍵排序。
  • 明確指定 OrderBy 可避免隱性行為,利於維護。
  • OrderBy 在 Page/From/Top 之前/之後呼叫皆可,內部會正確排序。

實戰範例:分類商品列表,分類升冪、價格降冪

var list = DbSession.Default.From()
    .Where(Products._.Discontinued == false)
    .OrderBy(Products._.CategoryID.Asc && Products._.UnitPrice.Desc)
    .Page(20, pageIndex)
    .ToList();

排序邏輯集中在查詢鏈中,零 SQL 字串,重構安全。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved