首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ 查詢入門:從資料源到執行的完整指南

     編輯:關於.NET

什麼是 LINQ?

Language-Integrated Query (LINQ) 為 .NET 提供了一致的查詢模型,跨越 SQL 資料庫、XML 文件、ADO.NET DataSet、記憶體集合等異構資料源。開發者不再需要為每種資料源學習專用查詢語言(SQL、XQuery 等),而是使用統一的 C#/VB 語法與標準查詢運算子。

查詢操作的三個階段

  1. 取得資料源:實作 IEnumerable<T> 或 IQueryable<T> 的物件(陣列、List、XElement、DataContext 等)。
  2. 建立查詢:使用查詢運算式語法或方法語法定義 var query = ...,**此時不執行任何資料存取**。
  3. 執行查詢:透過 foreach、ToList()、聚合函數(Count()、Max())等觸發實際執行。
int[] numbers = { 0, 1, 2, 3, 4, 5, 6 };

// 1. 資料源
// 2. 建立查詢(延遲執行)
var numQuery = from num in numbers
               where (num % 2) == 0
               select num;

// 3. 執行查詢
foreach (int n in numQuery) Console.Write(n + " "); // 輸出: 0 2 4 6
完整查詢操作範例
查詢操作三階段示意圖
查詢建立與執行分離示意

資料源:可查詢型別

任何實作 IEnumerable<T> 或衍生介面(IQueryable<T>)的型別皆為「可查詢型別」。

  • 陣列/集合:隱式支援 IEnumerable<T>。
  • LINQ to XML:XElement.Load(...) 載入 XML 為可查詢型別。
  • LINQ to SQL:DataContext 對應資料表,Table<T> 實作 IQueryable<T>。

查詢運算式語法

C# 引入類 SQL 子句(from、where、select、orderby、group、join、let 等),編譯器將其轉換為標準查詢運算子方法呼叫。查詢變數本身不儲存結果,只儲存查詢定義。

查詢執行機制

延遲執行

預設行為:foreach 迭代時才逐筆產生結果。優點:

  • 可重複執行查詢取得最新資料(如輪詢資料庫)。
  • 記憶體效率佳,不一次載入所有結果。

強制立即執行

聚合函數(Count、Sum、Average、First、Single)需完整掃描來源,故立即執行並回傳單一值而非序列。

亦可主動快取結果:

List<int> cached = (from n in numbers where n % 2 == 0 select n).ToList();
int[] cachedArray = (from n in numbers where n % 2 == 0 select n).ToArray();

總結

LINQ 將查詢提升為第一級語言建構,提供型別安全、IntelliSense、編譯時期檢查與除錯支援。掌握「建立與執行分離」是高效使用 LINQ 的關鍵——善用延遲執行特性組合查詢,僅在需要時具體化結果。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved