LINQ查詢?nèi)娼榻B
在向大家詳細(xì)介紹LINQ查詢之前,首先讓大家了解下LINQ提供了標(biāo)準(zhǔn)、簡(jiǎn)單的模式來(lái)查詢和更新數(shù)據(jù),然后全面介紹LINQ查詢。
LINQ是Visual Studio 2008及其以后版本中提供的功能,將強(qiáng)大的查詢擴(kuò)展到C#和VB.NET語(yǔ)言語(yǔ)法之中。LINQ提供了標(biāo)準(zhǔn)、簡(jiǎn)單的模式來(lái)查詢和更新數(shù)據(jù),同時(shí)還允許程序開(kāi)發(fā)人員進(jìn)行擴(kuò)展,支持任何類型的數(shù)據(jù)存儲(chǔ)。Visual Studio 2008包含了LINQ提供者程序集,能夠?qū)?NET Framework集合,內(nèi)存中的對(duì)象數(shù)組,SQL Server數(shù)據(jù)庫(kù),ADO.NET Dataset和XML文檔進(jìn)行語(yǔ)言集成的查詢。另外,我們也可以自己編寫LINQ提供者,提供對(duì)任何類型數(shù)據(jù)的查詢,只要實(shí)現(xiàn)了IEnumerable或者IEnumerable<T> (C#)或 IEnumerable (Of T) (Visual Basic)的數(shù)據(jù)類型,都可以進(jìn)行使用LINQ進(jìn)行操作。我們可以使用完全相同的語(yǔ)法查詢SQL數(shù)據(jù)庫(kù)、XML文檔、ADO.NET的Dataset(DataTable)、內(nèi)存中的集合對(duì)象,以及任何支持LINQ的遠(yuǎn)程或者本地?cái)?shù)據(jù)源。在LINQ查詢中,只與對(duì)象打交道,因此,可以完全不需要知道數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)源,而且采用的編程模型和語(yǔ)法也完全相同。
所有的LINQ查詢基本上都是由3個(gè)基本的操作組成:得到數(shù)據(jù)源,創(chuàng)建查詢和執(zhí)行查詢3個(gè)過(guò)程。數(shù)據(jù)的獲得是在執(zhí)行查詢的時(shí)候完成的。
- NorthWindDataContext NorthWind = new NorthWindDataContext();
是得到數(shù)據(jù)源
- var query = from c in NorthWind.
Customers where c.Country == "USA" select new { c.Country, c.CompanyName };
是創(chuàng)建查詢,此時(shí)并沒(méi)有對(duì)數(shù)據(jù)執(zhí)行任何操作
- GridView2.DataSource = query;
- GridView2.DataBind();
在數(shù)據(jù)綁定時(shí),才真正得到數(shù)據(jù)。
但是,有的查詢需要立即執(zhí)行,將結(jié)果放在內(nèi)存中,可以調(diào)用查詢或者查詢變量的ToList<(Of <TSource>)> 或者 ToArray<(Of <TSource>)>方法。例如:
- var query2 = from c in NorthWind.Customers where c.Country ==
"USA" select new { c.Country, c.CompanyName };- var query3 = query2.ToList();
好,運(yùn)行本程序可能需要采用模擬或者調(diào)整Excel.exe的權(quán)限,另外注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library,如果引用列表中沒(méi)有,需要自行添加 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE)。以上介紹LINQ查詢。
【編輯推薦】

















