LINQ(語言集成查詢)是C#和VB.NET中的統(tǒng)一查詢語法,用于從不同的源和格式檢索數(shù)據(jù)。它集成在C#或VB中,從而消除了編程語言和數(shù)據(jù)庫之間的不匹配,并為不同類型的數(shù)據(jù)源提供了單個(gè)查詢接口。
例如,SQL是一種結(jié)構(gòu)化查詢語言,用于保存和檢索數(shù)據(jù)庫中的數(shù)據(jù)。同樣,LINQ是C#和VB.NET中內(nèi)置的結(jié)構(gòu)化查詢語法,用于從不同類型的數(shù)據(jù)源(例如集合,ADO.Net DataSet,XML Docs,Web服務(wù)和MS SQL Server和其他數(shù)據(jù)庫)中檢索數(shù)據(jù)。
LINQ查詢將結(jié)果作為對(duì)象返回。它使您可以在結(jié)果集上使用面向?qū)ο蟮姆椒?,而不必?fù)?dān)心將不同格式的結(jié)果轉(zhuǎn)換為對(duì)象。
下面的示例演示一個(gè)簡(jiǎn)單的LINQ查詢,該查詢從包含“ a”的數(shù)組中獲取所有字符串。
// 數(shù)據(jù)源 string[] names = {"Bill", "Steve", "James", "Mohan" }; // LINQ查詢 var myLinqQuery = from name in names where name.Contains('a') select name; // 查詢執(zhí)行 foreach(var name in myLinqQuery) Console.Write(name + " ");
在上面的示例中,字符串?dāng)?shù)組名稱是一個(gè)數(shù)據(jù)源。以下是分配給變量 myLinqQuery 的LINQ查詢。
from name in names where name.Contains('a') select name;
上面的查詢使用LINQ的查詢語法。您將在“查詢語法”一章中了解更多信息。
在執(zhí)行LINQ查詢之前,您不會(huì)得到它的結(jié)果。LINQ查詢可以以多種方式執(zhí)行,這里我們使用foreach循環(huán)來執(zhí)行存儲(chǔ)在myLinqQuery中的查詢。foreach循環(huán)對(duì)數(shù)據(jù)源執(zhí)行查詢并獲得結(jié)果,然后在結(jié)果集上迭代。
因此,每個(gè)LINQ查詢都必須查詢某種數(shù)據(jù)源,無論它可以是數(shù)組,集合,XML還是其他數(shù)據(jù)庫。編寫LINQ查詢后,必須執(zhí)行它才能獲得結(jié)果。
在下一章中了解為什么要使用LINQ。