LINQ查詢操作經(jīng)驗(yàn)總結(jié)
學(xué)習(xí)LINQ時,經(jīng)常會遇到LINQ查詢操作問題,這里將介紹LINQ查詢操作問題的解決方法。
查詢是一種從數(shù)據(jù)源檢索數(shù)據(jù)的表達(dá)式。查詢通常用專門的查詢語言來表示。隨著時間的推移,人們已經(jīng)為各種數(shù)據(jù)源開發(fā)了不同的語言;例如,用于關(guān)系數(shù)據(jù)庫的 SQL 和用于 XML 的 XQuery。因此,開發(fā)人員不得不針對他們必須支持的每種數(shù)據(jù)源或數(shù)據(jù)格式而學(xué)習(xí)新的查詢語言。LINQ 通過提供一種跨各種數(shù)據(jù)源和數(shù)據(jù)格式使用數(shù)據(jù)的一致模型,簡化了這一情況。在 LINQ 查詢中,始終會用到對象。可以使用相同的基本編碼模式來查詢和轉(zhuǎn)換 XML 文檔、SQL 數(shù)據(jù)庫、ADO.NET 數(shù)據(jù)集、.NET 集合中的數(shù)據(jù)以及對其有 LINQ 提供程序可用的任何其他格式的數(shù)據(jù)。
LINQ查詢操作的三個部分,所有LINQ查詢操作都由以下三個不同的操作組成:
◆獲取數(shù)據(jù)源。
◆創(chuàng)建查詢。
◆執(zhí)行查詢。
下面的示例演示如何用源代碼表示查詢操作的三個部分。為了方便起見,此示例將一個整數(shù)數(shù)組用作數(shù)據(jù)源;但其中涉及的概念同樣適用于其他數(shù)據(jù)源。本主題的其余部分也會引用此示例。
- class IntroToLINQ
- {
- static void Main()
- {
- // The Three Parts of a LINQ Query:
- // 1. Data source.
- int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
- // 2. Query creation.
- // numQuery is an IEnumerable<int>
- var numQuery =
- from num in numbers
- where (num % 2) == 0
- select num;
- // 3. Query execution.
- foreach (int num in numQuery)
- {
- Console.Write("{0,1} ", num);
- }
- }
- }
下圖顯示了完整的LINQ查詢操作。在 LINQ 中,查詢的執(zhí)行與查詢本身截然不同;換句話說,如果只是創(chuàng)建查詢變量,則不會檢索任何數(shù)據(jù)。
【編輯推薦】