LINQ語法擴充了C#語言的查詢語法,可適用LINQ查詢的資料類型有
- SQL Server
- XML文件
- ADO.NET資料集
- Entity Framework
- 任何有實作IEnumerable介面或IEnumerable<T>泛型介面的集合物,像是Array及Collection等等
過去在寫程式比對Array或List的資料時,不免會用到for或foreach迴圈,使用LINQ後你會發現它是個簡潔好懂、好維護的東西。
使用LINQ前記得引用它的命名空間
1 | 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執行查詢分為兩種
- 延後執行查詢
剛剛以上的範例都屬於延後執行查詢,因實際執行查詢作業會延後至使用foreach來取回符合查詢的結果,因查詢變數本身並不會保留查詢結果,所以可以多次查詢變數來取得最新資料
- 強制立即查詢
某些執行彙總函式不須使用foreach來啟動LINQ執行
LINQ方法補充
LINQ查詢運算式語法與方法
查詢運算式語法類似SQL語法
1 | var query = from n in numbers |
其實經過編譯後LINQ查詢語法會變成方法語法上面這段等同於
1 | var query = numbers.Where(i => i % 2 == 0); |
Where方法裡使用條件運算式稱為Lambda運算式,用這種方式撰寫很方便,不須而外宣告方法。
以上面程式碼為例, =>是Lambda運算式,可讀成移至,它左邊的i是輸入變數,代表資料集合中的每一個物件,上面例子裡就是numbers,運算時每一個數值會被移至右邊的查詢運算式處理。
參考:
[C#.NET 拾遗补漏]08:强大的LINQ
文章若有錯誤或想交流,還不吝嗇給予指教哦