Why?
專精一個技能之前
必須先了解這個技能能做到甚麼
才知道這個技能值得不值得投資
LINQ (Language Integrated Query)
發音為 link
顧名思義就是指擁有資料查詢能力的語言
是一種將查詢功能整合至以C#語言為基礎之技術的名稱
也就是精通這部分的程式碼應用之後
集合處理的相關程式碼都可以得心應手
How?
我們要如何知道 LINQ 到底有哪幾招可以用?
打開 System.Linq.Enumerable 的程式碼定義 (NET 7.0)
總共會有 66 種方法可以使用
我會按照使用"需求情境"來分類這 66 方法
並且逐一的解釋每個方法的功能
類似的方法會進行比較
我所條列的需求情境
產生情境
System.Linq.Enumerable 大多都是針對 IEnumerable
- 無中生有: 從無到有產生一個 IEnumerable
- Repeat
- Range
- Empty
- 有中生有: 原本已經有其他種類的集合但不是IEnumerable
, 讓他轉成 IEnumerable - AsEnumerable
- Cast
資料處理
- 單一集合資料過濾
- Take/TakeLast/TakeWhile
- Skip/SkipLast/SkipWhile
- Distinct/DistinctLast/DistinctWhile
- Where
- OfType
- 單一集合資料排序
- Order/OrderDescending
- OrderBy/OrderByDescending
- ThenBy/ThenByDescending
- Reverse
- 但一集合資料轉型
- Select
- SelectMany
- 同維度的多集合組合/排除
- Concat
- Append
- Prepend
- Intersect/IntersectBy
- Union/UnionBy
- Except/ExceptBy
- 多集合資料組合
- Join
- GroupJoin
- Zip
- 單一集合資料分類
- GroupBy
- Chunk
輸出
從集合中得到結果
- Aggragate
- 運算整合:
- Average
- Sum
- Max/MaxBy
- Min/MinBy
- 邏輯整合
- All
- Any
- Contains
- SequenceEqual
- 取得集合數量:
- Count
- LongCount
- TryGetNonEnumeratedCount
- 從集合中取一筆出來:
- ElementAt/ElementAtOrDefault
- First/FirstOrDefault
- Last/LastOrDefault
- Single/SingleOrDefault
- 轉成其他實體集合
- ToArray
- ToHashSet
- ToDictionary
- ToLookup
- ToList
當你有一個集合處理的需求時
對應你面對的情境
你就可以從上面的表中找出對應的擴充方法
LINQ 的擴充命名方法都蠻直覺的
當你知道有這些方法存在時
你就會很好上手
接下來章節會介紹每一種情境的細節和使用方法
如果有必要會介紹進階的用法