LINQ查詢(xún)簡(jiǎn)單概述
學(xué)習(xí)LINQ時(shí),經(jīng)常會(huì)遇到LINQ查詢(xún)問(wèn)題,這里將介紹LINQ查詢(xún)問(wèn)題的解決方法。
在之前的C#版中,開(kāi)發(fā)者應(yīng)用許多不同的查詢(xún)語(yǔ)言來(lái)訪(fǎng)問(wèn)不同的數(shù)據(jù)源。例如,要查詢(xún)一個(gè)XML文件,開(kāi)發(fā)者會(huì)使用XPath,要查詢(xún)一個(gè)SQL數(shù)據(jù)庫(kù),開(kāi)發(fā)者將使用SQL。在過(guò)去這種方法十分有效,并且現(xiàn)在仍然是訪(fǎng)問(wèn)各種數(shù)據(jù)的主要方法。但是,這種方法具有一些缺點(diǎn)。一個(gè)顯著的缺點(diǎn)在于:開(kāi)發(fā)者必須以一種不同的語(yǔ)言,而非他們當(dāng)前使用的語(yǔ)言(如SQL或XPath)來(lái)編寫(xiě)查詢(xún)代碼。另一個(gè)缺點(diǎn)是,在執(zhí)行某些查詢(xún)語(yǔ)言,如SQL時(shí),開(kāi)發(fā)者必須編寫(xiě)映射代碼將查詢(xún)結(jié)果轉(zhuǎn)化為可用的C#業(yè)務(wù)對(duì)象。
C#3.0推出一種稱(chēng)之為語(yǔ)言集成查詢(xún)(LINQ)的新方法。應(yīng)用LINQ,開(kāi)發(fā)者可以編寫(xiě)出能夠搜索任何IEnumerable數(shù)據(jù)源的代碼。所以除了應(yīng)用TSQL訪(fǎng)問(wèn)MS SQL數(shù)據(jù)庫(kù),應(yīng)用XPath訪(fǎng)問(wèn)XML文件外,他們還可以應(yīng)用LINQ。
下面的代碼(列表C)是一個(gè)LINQ查詢(xún)的例子,它返回所有OrderCount大于10的顧客:
- using System;
- using System.Query;
- using System.Collections.Generic;
- public class SampleClass
- {
- static void Main()
- {
- List customers = GetCustomers();
- //Write our query to retrieve customers who have more than
- // 10 orders.
- IEnumerable queryResult = from customer in customers
- where customer.OrderCount > 10
- orderbycustomer.ID
- select customer;
- }
- }
LINQ與SQL或XPath不同,LINQ查詢(xún)用C#,而非第三方語(yǔ)言編寫(xiě)。這樣,查詢(xún)就不會(huì)出現(xiàn)類(lèi)型問(wèn)題,開(kāi)發(fā)者也就沒(méi)有必要編寫(xiě)映射代碼把查詢(xún)返回的數(shù)據(jù)轉(zhuǎn)化成C#對(duì)象,而由LINQ API自動(dòng)處理映射。
基本上,在ORM解決方案中,LINQ對(duì)象用途很大。同樣,它的范圍也非常廣泛,有大量MSDM信息描述了它的功能。
【編輯推薦】

















