iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
自我挑戰組

學習C#續系列 第 16 篇

Day 16:LINQ(排序運算、群組運算)

  • 分享至 

  • xImage
  •  

排序運算(orderby / OrderBy / OrderByDescending):

  • 單一條件排序:
    • 遞增(由小到大):查詢語法使用 orderby 鍵值 ascending(ascending 可省略,預設為遞增);方法語法使用 .OrderBy(x => x.鍵值)。
    • 遞減(由大到小):查詢語法使用 orderby 鍵值 descending;方法語法使用 .OrderByDescending(x => x.鍵值)。
  • 次要條件排序(次排序):
    • 查詢語法:以逗號分隔多個欄位,例如 orderby x.Age descending, x.Name。
    • 方法語法:不可連續呼叫兩次 OrderBy(會完全覆蓋第一次排序),必須在第一次排序後使用 .ThenBy() 或 .ThenByDescending()。

群組運算(group ... by / GroupBy):

  • 將資料依照指定的「分組鍵(Key)」分類為多個子集合,回傳型別為實作 IGrouping<TKey, TElement> 的集合。
  • IGrouping<TKey, TElement> 結構:
    • group.Key:代表該組的群組分類值(例如部門名稱、類別 ID)。
    • 物件本身即為一個可列舉集合,可透過內層 foreach 遍歷該群組包含的所有成員,或直接搭配 Count()、Sum() 等聚合函數計算群組統計值。
  • 延續查詢(into 關鍵字):在查詢語法中,若分組後還要進行排序或篩選,可使用 group ... by ... into g 將分組結果命名為變數 g 繼續運算。

實作範例
https://ithelp.ithome.com.tw/upload/images/20260929/20178925vXNQ0UBMoL.png

https://ithelp.ithome.com.tw/upload/images/20260929/20178925N3YDqeToxy.png

https://ithelp.ithome.com.tw/upload/images/20260929/20178925T99VQ9LRpC.png

https://ithelp.ithome.com.tw/upload/images/20260929/20178925HHrFYvMqnr.png


上一篇
Day 15:LINQ的基本操作
下一篇
Day 17:select 子句投影作用、LINQ to Object
系列文
學習C#續 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言