LINQ 查詢在數據源、查詢變量、執行迭代三個階段均為強類型。變量類型必須與數據源元素類型、foreach 迭代變量類型相容,編譯期即捕獲類型錯誤。

IEnumerable → string)string)string)
IEnumerable → 範圍變量 CustomerName(string)→ 查詢變量類型變為 IEnumerablestring

// 顯式類型版本
IEnumerable customers = GetCustomers();
IEnumerable names = from c in customers select c.Name;
foreach (string name in names) { Console.WriteLine(name); }
// var 版本(完全等效,編譯器自動推導所有類型)
var customers = GetCustomers(); // IEnumerable
var names = from c in customers select c.Name; // IEnumerable
foreach (var name in names) { Console.WriteLine(name); }
| 查詢階段 | 類型決定因素 | 開發者動作 |
|---|---|---|
| 數據源 | 集合泛型參數 / 實作 IEnumerable | 確保數據源強類型 |
| 範圍變量 | 數據源元素類型 | 無需聲明,from 子句自動推導 |
| 查詢變量 | select 子句投影結果類型 | 可顯式聲明或用 var |
| 迭代變量 | 查詢變量元素類型 | foreach 中顯式或用 var |
dynamic 繞過LINQ 的強類型查詢管道確保了從數據源到結果消費的類型安全。理解類型流向關係,善用 var 讓編譯器承擔推導工作,能編寫更簡潔、可維護、重構友好的查詢代碼。