0%

C# —— LINQ

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

  1. SQL Server
  2. XML文件
  3. ADO.NET資料集
  4. Entity Framework
  5. 任何有實作IEnumerable介面或IEnumerable<T>泛型介面的集合物,像是Array及Collection等等

"photo"

過去在寫程式比對Array或List的資料時,不免會用到for或foreach迴圈,使用LINQ後你會發現它是個簡潔好懂、好維護的東西。

使用LINQ前記得引用它的命名空間

1
using System.Linq;

LINQ基本查詢語法

STEP.1 指定資料來源這邊是 names陣列

STEP.2 用form關鍵字指定一個變數用以取得集合中每個成員,使用in關鍵字指定資料來源

STEP.3 執行查詢

以下範例使用變數s代表names集合:

"photo"

LINQ指定篩選條件(where)

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

"photo"

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

"photo"

LINQ指定排序(orderby)

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

"photo"

LINQ執行查詢分為兩種

  1. 延後執行查詢

剛剛以上的範例都屬於延後執行查詢,因實際執行查詢作業會延後至使用foreach來取回符合查詢的結果,因查詢變數本身並不會保留查詢結果,所以可以多次查詢變數來取得最新資料

"photo"

  1. 強制立即查詢

某些執行彙總函式不須使用foreach來啟動LINQ執行

"photo"

LINQ方法補充

"photo"

LINQ查詢運算式語法與方法

查詢運算式語法類似SQL語法

1
2
3
var query = from n in numbers
where n% 2 ==0
select n;

其實經過編譯後LINQ查詢語法會變成方法語法上面這段等同於

1
var query = numbers.Where(i => i % 2 == 0);

Where方法裡使用條件運算式稱為Lambda運算式,用這種方式撰寫很方便,不須而外宣告方法。

以上面程式碼為例, =>是Lambda運算式,可讀成移至,它左邊的i是輸入變數,代表資料集合中的每一個物件,上面例子裡就是numbers,運算時每一個數值會被移至右邊的查詢運算式處理。

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

文章若有錯誤或想交流,還不吝嗇給予指教哦