LINQ to Entities 中的查詢

查詢是指從資料來源中擷取資料的運算式。 查詢通常會以特定的查詢語言來表示,例如 SQL 用於關聯式資料庫,而 XQuery 用於 XML。 因此,開發人員必須針對他們所查詢的每種資料來源或資料格式,學習新的查詢語言。 Language-Integrated Query (LINQ) 提供了一種較簡單且一致的模型,可處理各種資料來源和格式的資料。 在 LINQ 查詢中,您一定會使用程式設計物件。

LINQ 查詢作業由三個動作構成:取得資料來源、建立查詢和執行查詢。

實作 IEnumerable<T> 泛型介面或 IQueryable<T> 泛型介面的資料來源可以透過 LINQ 進行查詢。 實作泛型 ObjectQuery<T> 介面的 IQueryable<T> 泛型類別的執行個體會當做 LINQ to Entities 查詢的資料來源。 ObjectQuery<T> 泛型類別表示傳回零個或多個具型別物件之集合的查詢。 使用 C# 的 var 關鍵字 (在 Visual Basic 為 Dim),您也可以讓編譯器推斷實體類型。

在此查詢中,您可以精確地指定想要從資料來源中擷取的資訊。 此外,查詢也可以指定該項資訊傳回之前應該如何排序、分組和成形。 在 LINQ 中,查詢會儲存在變數內。 如果查詢傳回一連串值,查詢變數本身必須是可查詢型別。 這個查詢變數不會採取任何動作,也不會傳回任何資料。它只會儲存查詢資訊。 在您建立查詢之後,必須執行該查詢以便擷取任何資料。

查詢語法

LINQ to Entities 查詢可以使用兩個不同的語法來撰寫:查詢運算式語法和以方法為基礎的查詢語法。 查詢運算式語法是 C# 3.0 和 Visual Basic 9.0 中的新項目,是由類似 Transact-SQL 或 XQuery 的宣告式語法撰寫的一組子句所構成。 然而,.NET Framework Common Language Runtime (CLR) 無法讀取查詢運算式語法本身。 因此,在編譯期間,查詢運算式會轉譯為 CLR 可以了解的項目:即方法呼叫。 這些方法就是所謂的「標準查詢運算子」。 身為開發人員,您可以選擇使用方法語法來直接呼叫它們,而非使用查詢語法。 如需詳細資訊,請參閱 LINQ 中的查詢語法及方法語法

查詢運算式語法

查詢運算式是宣告式查詢語法。 這些語法可以讓開發人員以類似 Transact-SQL 格式的高階語言撰寫查詢。 透過使用查詢運算式語法,您就可以利用最少的程式碼,針對資料來源執行同樣複雜的篩選、排序和分組作業。 如需詳細資訊,請參閱基本查詢作業 (Visual Basic)。 如需示範如何使用查詢運算式語法的範例,請參閱下列主題:

以方法為基礎的查詢語法

另一種撰寫 LINQ to Entities 查詢的方式是使用以方法為基礎的查詢。 以方法為基礎的查詢語法是對 LINQ 運算子方法之直接方法呼叫的序列,並傳遞 Lambda 運算式當做參數。 如需詳細資訊,請參閱 Lambda 運算式。 如需示範如何使用以方法為基礎的語法之範例,請參閱下列主題:

另請參閱