[C#] .NET 6 - Enumerable.Chunk 寫分頁資料的新好幫手

2023-02-06

今天來寫一個不算新但是很好用的東西 LINQ - Chunk , 這是 .NET 6  之後才有的

這東西很快只要一行就解決我每次都很不想寫的東西,就是分頁

以前寫分頁都要這樣下  LINQ  AllData.Skip((page-1)*perPageDataCount).Take(perPageDataCount)

現在只要一行解決


本文案例 模擬塞入52 筆資料,透過 Chunk 得知可以分成幾頁,然後每一頁的資料為何

我每一頁希望10筆資料,所以理論上會有 6頁 ,最後一頁是只顯示兩筆資料


其實,因為很簡單看一下程式碼立即可以懂直接獻上程式碼,因為我剛好手上專案是寫 ASP.NET 不是用 Console 起見諒我的換行換得很醜


Result:

頁面總數:6

第1頁

Id52,Name:用戶52

Id51,Name:用戶51

Id50,Name:用戶50

Id49,Name:用戶49

Id48,Name:用戶48

Id47,Name:用戶47

Id46,Name:用戶46

Id45,Name:用戶45

Id44,Name:用戶44

Id43,Name:用戶43

==

第2頁

Id42,Name:用戶42

Id41,Name:用戶41

Id40,Name:用戶40

Id39,Name:用戶39

Id38,Name:用戶38

Id37,Name:用戶37

Id36,Name:用戶36

Id35,Name:用戶35

Id34,Name:用戶34

Id33,Name:用戶33

==

第3頁

Id32,Name:用戶32

Id31,Name:用戶31

Id30,Name:用戶30

Id29,Name:用戶29

Id28,Name:用戶28

Id27,Name:用戶27

Id26,Name:用戶26

Id25,Name:用戶25

Id24,Name:用戶24

Id23,Name:用戶23

==

第4頁

Id22,Name:用戶22

Id21,Name:用戶21

Id20,Name:用戶20

Id19,Name:用戶19

Id18,Name:用戶18

Id17,Name:用戶17

Id16,Name:用戶16

Id15,Name:用戶15

Id14,Name:用戶14

Id13,Name:用戶13

==

第5頁

Id12,Name:用戶12

Id11,Name:用戶11

Id10,Name:用戶10

Id9,Name:用戶9

Id8,Name:用戶8

Id7,Name:用戶7

Id6,Name:用戶6

Id5,Name:用戶5

Id4,Name:用戶4

Id3,Name:用戶3

==

第6頁

Id2,Name:用戶2

Id1,Name:用戶1

==


補述

如果你只是要抓第二頁的資料那就是取第二區塊 配合 ElementAt 使用


Result:

頁面總數:6

Id42,Name:用戶42

Id41,Name:用戶41

Id40,Name:用戶40

Id39,Name:用戶39

Id38,Name:用戶38

Id37,Name:用戶37

Id36,Name:用戶36

Id35,Name:用戶35

Id34,Name:用戶34

Id33,Name:用戶33

是不是變得超簡單

reference:

https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk?view=net-6.0


當麻許的超技八 2014 | Donma Hsu Design.