[C#] 如何使用 Sort 和「查詢運算式」在 List<T> 中做排序和尋找
還記得我一開始用 List<T> 型別的時候
是要做一個簡單的學生成績程式
其中會將「Student」類別都加到 List<Student> 裡頭
簡單的程式碼如下:
Sort
如果我們需要對這 10 個學生,按照成績做排序呢?
以前不懂的我,馬上搬出「Quick Sort」快速排序法(也許還有氣泡排序、選擇排序…等等)
但是現在
你可以透過下列方式:
就這麼簡單
先來說明一下:
在 List<T> 中提供了 Sort 函式,讓你可以按照想要的排序條件做排序
在 MSDN 官網中有提到
其實它是用「快速排序法」(Quick Sort) 去實作的
其中上述的程式碼是透過「Lambda」表述式來完成「比較」的動作
「x」和「y」分別為想取的兩個數
而這兩個變數的型別會自動抓到是「Student」
所以可以取得 Public 變數 Score 來做比較
最後會傳回 1、0 或 –1
代表的意思分別為:x > y, x == y, x < y。
所以如果要將分數是由高到底排序,則在 return 的地方加個「負號」即可。
值得一提的是
如果你的 List 集合是很單純的值
例如:List<int>
那當你要排序的時候
只要直接呼叫 Sort 就會幫你做排序的動作了
取得
現在有了排序
我們還想將成績不及格的同學抓出來
最簡單的方法就是透過迴圈
比對分數,低於 60 分的都 Get 出來
不過這邊要講的是另一個方法
透過「查詢運算式」可以利用像是「資料庫搜尋」的程式碼
將想取得的值抓出,並建立一個 List 集合
取得後回傳的 query 變數
也能透過 foreach 將分數印出
當然也是可以再做一次排序
完整程式碼