初接觸 .NET 開發時,最容易混淆「LINQ」與「SQL Server」的關係。簡單說:LINQ 是查詢語法/程式庫,SQL Server 是資料庫伺服器,兩者層級完全不同。
| 維度 | LINQ (Language Integrated Query) | SQL Server 2008 |
|---|---|---|
| 本質 | .NET Framework 3.5+ 內建的查詢語法與標準查詢運算子 | 關聯式資料庫管理系統 (RDBMS) |
| 執行端 | 用戶端記憶體 (LINQ to Objects) 或轉譯為 SQL 在伺服端執行 (LINQ to SQL / Entity Framework) | 伺服端資料庫引擎 |
| 資料來源 | 陣列、List、XML、DataSet、資料庫、WCF 服務…任何實作 IEnumerable/IQueryable 的來源 | 僅限資料庫表/檢視/預存程序 |
| 語法風格 | C#/VB 原生語法(from x in list where x.Age>18 select x) | T-SQL (SELECT * FROM Users WHERE Age>18) |
| 型別安全 | 編譯期型別檢查,IntelliSense 完整支援 | 執行期才發現語法/欄位錯誤 |
| 部署相依 | 只需 .NET Framework / .NET Core Runtime | 需安裝 SQL Server 服務 (Express/Standard/Enterprise) |
var adults = db.Users.Where(u => u.Age > 18);db 是 DataContext/DbContext (IQueryable),LINQ Provider 將運算式樹轉譯為 T-SQL:SELECT * FROM Users WHERE Age > 18。User 物件集合。把 LINQ 當成「強型別、編譯期檢查、跨資料來源」的查詢介面,把 SQL Server 當成「高併發、ACID、海量儲存」的後端引擎,兩者互補而非替代,架構才會清晰穩健。