C# — LINQ
網站已搬家,請到新網站支持我呦> https://jasonhsieh-web.github.io/
LINQ語法擴充了C#語言的查詢語法,可適用LINQ查詢的資料類型有
- SQL Server
- XML文件
- ADO.NET資料集
- Entity Framework
- 任何有實作IEnumerable介面或IEnumerable<T>泛型介面的集合物,像是Array及Collection等等
過去在寫程式比對Array或List的資料時,不免會用到for或foreach迴圈,使用LINQ後你會發現它是個簡潔好懂、好維護的東西。
使用LINQ前記得引用它的命名空間
using System.Linq;
LINQ基本查詢語法
STEP.1指定資料來源這邊是 names陣列
STEP.2用form關鍵字指定一個變數用以取得集合中每個成員,使用in關鍵字指定資料來源
STEP.3執行查詢
以下範例使用變數s代表names集合
LINQ指定篩選條件(where)
資料來源跟上面的一樣,使用where來挑選開頭是a的字串
where運算式可以出現多次,先找開頭是a的字串,再找結尾是e的字串
LINQ指定排序(orderby)
若要做降冪排序,則在orderby後加上descending
LINQ執行查詢分為兩種 1.延後執行查詢
剛剛以上的範例都屬於1.延後執行查詢,因實際執行查詢作業會延後至使用foreach來取回符合查詢的結果,因查詢變數本身並不會保留查詢結果,所以可以多次查詢變數來取得最新資料
2.強制立即查詢
某些執行彙總函式不須使用foreach來啟動LINQ執行
LINQ方法補充
LINQ查詢運算式語法與方法
查詢運算式語法類似SQL語法
例如
var query = from n in numbers
where n% 2 ==0
select n;
其實經過編譯後LINQ查詢語法會變成方法語法上面這段等同於
var query = numbers.Where(i => i % 2 == 0);
Where方法裡使用條件運算式稱為Lambda運算式,用這種方式撰寫很方便,不須而外宣告方法.
以上面程式碼為例, =>是Lambda運算式,可讀成移至,它左邊的i是輸入變數,代表資料集合中的每一個物件,上面例子裡就是numbers,運算時每一個數值會被移至右邊的查詢運算式處理.
關於Lambda運算式會再下一次為大家講解(誤)...
如果我的筆記對您有幫助的話,不吝嗇給我個clap哦~ 謝謝您 !