訓練
認證
Microsoft Certified: Azure Cosmos DB Developer Specialty - Certifications
透過 Microsoft Azure Cosmos DB 在 SQL API 和 SDK 中撰寫有效率的查詢、建立索引編製原則、管理及佈建資源。
Language Integrated Query (LINQ) 是一組以直接將查詢功能整合至 C# 語言為基礎之技術的名稱。 傳統上,資料查詢是以簡單的字串表示,既不會在編譯時進行類型檢查,也不支援 IntelliSense。 此外,您還必須針對每種資料來源類型學習不同的查詢語言:SQL 資料庫、XML 文件、各種 Web 服務等等。 透過 LINQ,查詢會是第一級語言建構,和類別、方法及事件相同。
撰寫查詢時,LINQ 最明顯的「語言整合」部分就是查詢運算式。 查詢運算式是以宣告式「查詢語法」撰寫。 透過使用查詢語法,您就可以利用最少的程式碼,針對資料來源執行篩選、排序及分組作業。 您可以使用相同的查詢運算式模式,從任何類型的資料來源查詢和轉換資料。
下列範例示範完整的查詢作業。 完整的作業包括建立資料來源、定義查詢運算式,並在 foreach
陳述式中執行查詢。
// Specify the data source.
int[] scores = [97, 92, 81, 60];
// Define the query expression.
IEnumerable<int> scoreQuery =
from score in scores
where score > 80
select score;
// Execute the query.
foreach (var i in scoreQuery)
{
Console.Write(i + " ");
}
// Output: 97 92 81
您可能需要為上述範例新增 using
指示詞 (using System.Linq;
) 才能進行編譯。 最新版本的 .NET 會使用隱含使用,將這個指示詞新增為全域使用。 舊版會要求您在來源中新增此指示詞。
foreach
陳述式中),查詢將不會執行。您可以使用兩種方式來啟用記憶體內部資料的 LINQ 查詢。 如果資料屬於實作 IEnumerable<T> 的型別,您可以使用 LINQ to Objects 來查詢資料。 如果藉由實作 IEnumerable<T> 介面來啟用列舉不是合理的作法,您可以在該型別中定義 LINQ 標準查詢運算子方法,或將其定義為該型別的擴充方法。 標準查詢運算子的自訂實作 (Implementation) 應該會使用延後執行 (Deferred Execution) 來傳回結果。
若要啟用遠端資料來源的 LINQ 查詢,最佳選項為實作 IQueryable<T> 介面。
實作 IQueryable<T> 的 LINQ 提供者在複雜度上可能會有很大的差異。
較不複雜的 IQueryable
提供者可能會從 Web 服務存取單一方法。 這種類型的提供者非常特別,因為它預期本身所處理的查詢中應該有特定的資訊。 這種提供者具有封閉類型系統,可能會公開單一結果類型。 多數的查詢執行工作都是在本機進行,例如利用標準查詢運算子的 Enumerable 實作。 複雜度較低的提供者可能只會在代表查詢的運算式樹狀架構中檢查一個方法呼叫運算式,並讓查詢的其餘邏輯在其他地方處理。
複雜度中等的 IQueryable
提供者可能以具有部分表示查詢語言的資料來源為目標。 如果以 Web 服務為目標,其可能會存取一個以上的 Web 服務方法,並根據查詢所搜尋的資訊選取要呼叫的方法。 中等複雜度的提供者擁有的類型系統雖然比簡單提供者更為多樣化,但仍然為固定類型系統。 例如,提供者可能會公開具有可周遊的一對多關聯性 (One-To-Many Relationship),但卻不會提供使用者定義型別的對應技術。
複雜的 IQueryable
提供者 (例如 Entity Framework Core 提供者) 可能會將完整的 LINQ 查詢轉譯為表達式查詢語言,例如 SQL。 複雜的提供者更為廣泛,因為其可以在查詢中處理更多種類的問題。 它也具有開放類型系統,因此必須包含廣泛的基礎結構,以對應使用者定義的類型。 開發複雜的提供者需要花費相當大量的心力。
訓練
認證
Microsoft Certified: Azure Cosmos DB Developer Specialty - Certifications
透過 Microsoft Azure Cosmos DB 在 SQL API 和 SDK 中撰寫有效率的查詢、建立索引編製原則、管理及佈建資源。