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