LINQ 隨 .NET Framework 3.5 發布並加入 Visual Studio,以「可以在程式裡寫 SQL 語法查資料」為其特點,故寫法可分成兩種,一種是用 LINQ 查詢運算式(LINQ Query Expression,寫法有點像 SQL 語法),另一種則是用 LINQ 中的函數加上 Lambda 運算式。
![LINQ語法](https://marketing.ares.com.tw/dm/newsletter-2018-11-osc/images/img_article_it_1.png)
在經歷開發多個 ASP .NET MVC 專案之後,發現若無要求使用 LINQ 寫法的話,該專案的 LINQ 使用率就會較低。其實適當使用 LINQ 寫法會更有效率,並不會降低程式可讀性,程式碼也不會太過冗長。
LINEQ 常用的五個面向
資料轉型方面
ASP .NET MVC 專案所使用的資料類型大多使用強型別(例如:自定義的資料模型),不再像以往使用弱型別(例如:DataTable),所以於資料庫取出的資料會由弱型別轉成強型別,有些開發者習慣使用 for、foreach 來進行資料轉型,其作法當取出大量資料時會比較耗時,若是轉為 LINQ 寫法則不會降低程式的可讀性,並可降低執行時間。
資料轉型 foreach 寫法 資料轉型 LINQ 寫法 資料篩選方面
一般寫法大都是用 for、foreach、while 配合 if else 判斷來撰寫;LINQ 寫法(Where、All、Any)相較之下程式碼較為簡短,並不會降低程式的可讀性。
資料篩選 foreach 寫法 資料篩選 LINQ 寫法 資料分頁或是取部分資料方面
一般寫法大都是用 for 來撰寫;LINQ 寫法(Skip、Take)相較之下程式碼較為簡短,並不會降低程式的可讀性,也可以用 Where 配合來進行相關撰寫。
資料分頁 for 寫法 資料分頁 LINQ 寫法 資料計數或加總方面
一般寫法大都是用 for、foreach、while 配合 if else 判斷來撰寫;LINQ 寫法(Count、Sum)相較之下程式碼較為簡短,並不會降低程式的可讀性,也可以用 Where 配合來進行相關撰寫。
資料計數 foreach 寫法 資料計數 LINQ 寫法 資料排序方面
一般寫法大都是在轉換型別前,用 DataTable 的相關排序方式或是用 for 方式來進行排序;LINQ 寫法(OrderBy、OrderByDescending、ThenBy、ThenByDescending)相較之下程式碼較為簡短,並不會降低程式的可讀性。
資料排序 LINQ 寫法 - 單一排序 資料排序 LINQ 寫法 - 多重排序