C# — LINQ

謝駿辰
Jason的網頁筆記
Jun 2, 2021
Photo by Paul Gilmore on Unsplash

網站已搬家,請到新網站支持我呦> https://jasonhsieh-web.github.io/

LINQ語法擴充了C#語言的查詢語法,可適用LINQ查詢的資料類型有

  1. SQL Server
  2. XML文件
  3. ADO.NET資料集
  4. Entity Framework
  5. 任何有實作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基本查詢語法

LINQ指定篩選條件(where)

資料來源跟上面的一樣,使用where來挑選開頭是a的字串

where

where運算式可以出現多次,先找開頭是a的字串,再找結尾是e的字串

LINQ指定排序(orderby)

若要做降冪排序,則在orderby後加上descending

orderby

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運算式會再下一次為大家講解(誤)...

參考:[C#.NET 拾遗补漏]08:强大的LINQ

如果我的筆記對您有幫助的話,不吝嗇給我個clap哦~ 謝謝您 !

--

--