iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
自我挑戰組

學習C#續系列 第 14 篇

Day 14:LINQ介紹

  • 分享至 

  • xImage
  •  

認識 LINQ(Language Integrated Query,語言整合查詢):

  • C# 提供的一種宣告式查詢語法,將 SQL 風格的查詢能力直接整合進程式語言內部。
  • 統一存取介面:不論資料來源是記憶體集合(LINQ to Objects)、資料庫(LINQ to Entities)、XML 或是 JSON,皆能用統一的語法進行過濾、排序與分組。
  • 語法風格:分為「方法語法(Method Syntax,搭配 Lambda)」與「查詢語法(Query Syntax,類似 SQL)」,實務上方法語法更具彈性且最常用。

LINQ 與 IEnumerable 介面:

    • LINQ to Objects 的擴充方法皆定義在 System.Linq 命名空間下的靜態類別 Enumerable 之中。
  • 目標對象:只要型別實作了 IEnumerable 介面(如 List、陣列、Dictionary<TKey, TValue> 等),就能直接呼叫 LINQ 擴充方法。
  • 延遲執行(Deferred Execution / Lazy Evaluation):
    • 呼叫 Where()、Select() 等查詢方法時,不會立即執行運算,而是先建立查詢管線。
    • 直到真正列舉資料(如使用 foreach 遍歷、呼叫 ToList()、ToArray()、Count())時,運算才會正式執行。

配合 Where() 方法:

  • 用途為條件過濾(篩選),只保留符合條件的元素。
  • 接收一個回傳布林值的委派:Func<T, bool>(通常以 Lambda 運算式表示,如 x => x > 5)。
  • 支援傳入元素索引的簽章多載:Func<T, bool int,>,可在篩選條件中同時判定元素本身與其索引位置。

實作範例
https://ithelp.ithome.com.tw/upload/images/20260927/20178925hX5E9aeHxT.png

https://ithelp.ithome.com.tw/upload/images/20260927/20178925qN5cNxVbIw.png

https://ithelp.ithome.com.tw/upload/images/20260927/20178925JiZQZdV2jS.png

https://ithelp.ithome.com.tw/upload/images/20260927/20178925gH60lOWa2X.png


上一篇
Day 13:例外狀況的處理
下一篇
Day 15:LINQ的基本操作
系列文
學習C#續 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言