LINQ 查詢操作本質是為 IEnumerable 增加的擴充方法(查詢運算子),可用方法呼叫風格:
books.Where(b => b.Title.StartsWith("L"))
.OrderBy(b => b.Price)
.Select(b => new { key = b.Title, value = b.Price });
所有方法操作並回傳 IEnumerable。按用途分類:
| 用途 | 方法 |
|---|---|
| 映射/投影 | Select、SelectMany |
| 條件過濾 | Where、OfType |
| 排序 | OrderBy、OrderByDescending、Reverse、ThenBy、ThenByDescending |
| 分組 | GroupBy、ToLookup |
| 聯結 | GroupJoin、Join |
| 轉型 | Cast(將非泛型 IEnumerable 轉為泛型) |
微軟認為方法呼叫風格不夠人性化,推出「查詢運算式」(語法糖),近似 SQL:
from book in books
where book.Title.StartsWith("L")
orderby book.Price ascending
select new { key = book.Title, value = book.Price };
C# 編譯器內部將查詢運算式轉為方法呼叫。語法結構(參考 LINQ in Action 圖示):

查詢運算式以 from 起始,接著可選的聯結、過濾、排序,最後以 select 或 group by 結束。from 引入範圍變數遍歷來源序列。
GroupBy ↔ group ... by 或 group ... by ... into ...(後者可續接查詢)ThenBy ↔ orderby ..., ...Join ↔ join ... in ... on ... equals ...(on 左右順序對應 outer/inner key selector)部分查詢運算子無對應查詢運算式(VB.NET 較完整),複雜查詢建議用方法呼叫風格可讀性較佳。
理論基礎至此告一段落,後續將以實例講解。歡迎建議指教。