Jeff Wang (王瑄銘) 於 2021/04/25, 週日
分類: C#

LINQ基本介紹

​在學習C#時,不可避免的會碰到對資料的處理,本文章記錄筆者在學習LINQ對資料處理的方面曾有過的疑惑與後續的了解。

LINQ,全名為 Language Integrated Query,發音為"link",顧名思義就是指擁有資料查詢能力的語言,是一種將查詢功能整合至以C#語言為基礎之技術的名稱。

主要有兩種查詢寫法:

 查詢運算式​(Query Expression Syntax)

 查詢運算式是一種長得有點像SQL搜尋語法的運算式,範例如下:

標準查詢運算子​(Standard Query Operators) 

 標準查詢運算子,是應用於集合類型的運算子,提供了包括篩選、彙總、排序...等查詢功能,像是Select、Where、JOIN、OrderBy...等方法,範例如下:

​這兩種是不是看起來有點像又有點不太一樣! 

其實這兩種寫法,在經過Compiler編譯後,編譯出來的結果都是相同的! 所以可以依個人偏好選擇寫法。

下面舉個例子來說明一些細節:

​從studentList的集合中,找到其中學生的年齡是介於12歲以及20歲之間的資料,並將學生的姓名以及年齡取出,之後進行輸出。

其中有一些特點:

​而上面的查詢運算式程式碼,編譯後結果等同於下面這段標準查詢運算子程式碼:

可以看到有相當多可以探討的地方,例如 物件初始化、匿名型別,以及 LINQ 為什麼能對這些objects、entities 進行操作呢? 那是因為中間有 LINQ Providers 在幫我們做事情! 這些方法詳細的說明要期待後續的文章。

​總結:LINQ是一種很強大的整理資料的方法,甚至有文章因為其便利性,用「少了LINQ幾乎不會寫程式」這種說法(笑)。

    本篇大概說明LINQ的兩種寫法,因筆者在查詢資料時不太清楚為何會產生出這兩種寫法,他們的差異為何,因此在查詢相關文件後有點解惑,同時做了些整理。

參考資料:

維基百科:https://en.wikipedia.org/wiki/Language_Integrated_Query#Language_extensions

微軟官方文件:https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/concepts/linq/

                         https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/concepts/linq/standard-query-operators-overview

                         https://docs.microsoft.com/zh-tw/dynamics365/fin-ops-core/dev-itpro/dev-tools/linq-provider-c

相關文章

填寫評論