LINQ (Language Integrated Query) 將查詢能力整合進 .NET 語言,提供編譯期語法檢查、智慧感知、強型別等優勢,統一查詢記憶體集合、資料庫、XML、DataSet 等異質資料源。
var q = from c in db.Customers
where c.City == "London"
select c;
等同 SQL WHERE City = 'London'。支援多條件 &&/||、方法呼叫(可轉譯者)、子查詢。
q 僅為「查詢定義」,不執行foreach、ToList()、Count() 等實體化操作才發送 SQL
// 動態組合查詢
var q = db.Customers.AsQueryable();
if (!string.IsNullOrEmpty(city)) q = q.Where(c => c.City == city);
if (minOrders > 0) q = q.Where(c => c.Orders.Count >= minOrders);
var list = q.ToList(); // 此時才執行
這正是 LINQ 強大的核心:查詢組合與延遲執行。