我們可以為實(shí)現(xiàn)IEnumerable <T>或 IQueryable <T>接口的類編寫LINQ查詢。System.Linq的命名空間包括下列類和接口要求對(duì)LINQ查詢。
LINQ查詢對(duì)實(shí)現(xiàn)IEnumerable或IQueryable接口的類使用擴(kuò)展方法。Enumerable和Queryable是兩個(gè)靜態(tài)類,它們包含編寫LINQ查詢的擴(kuò)展方法。
Enumerable類包括用于實(shí)現(xiàn)IEnumerable<T>接口的類的擴(kuò)展方法,例如,所有內(nèi)置集合類都實(shí)現(xiàn)了IEnumerable<T>接口,因此我們可以編寫LINQ查詢來從內(nèi)置集合中檢索數(shù)據(jù)。
下圖顯示了Enumerable類中包含的擴(kuò)展方法,可以與C#或VB.Net中的泛型集合一起使用。
下圖顯示了Enumerable該類中所有可用的擴(kuò)展方法。
Enumerable 類
Queryable類包含用于實(shí)現(xiàn)成員“> IQueryable <t>接口的類的擴(kuò)展方法。該IQueryable<T>接口用于提供針對(duì)已知數(shù)據(jù)類型的特定數(shù)據(jù)源的查詢功能,例如,Entity Framework api實(shí)現(xiàn)了IQueryable<T>針對(duì)通過底層數(shù)據(jù)庫(例如MS SQL Server)支持LINQ查詢。
此外,還有一些API可用于訪問第三方數(shù)據(jù)。例如,LINQ to Amazon提供了將LINQ與Amazon Web服務(wù)結(jié)合使用以搜索書籍和其他物品的功能。這可以通過IQueryable為Amazon實(shí)現(xiàn)接口來實(shí)現(xiàn)。
下圖顯示了Queryable該類中可用的擴(kuò)展方法,可以與各種本機(jī)或第三方數(shù)據(jù)提供程序一起使用。
下圖顯示了Queryable該類中可用的擴(kuò)展方法。
使用 System.LINQ 命名空間來使用 LINQ。
LINQ api包括兩個(gè)主要的靜態(tài)類Enumerable 和 Queryable。
靜態(tài)Enumerable類包括用于實(shí)現(xiàn)IEnumerable <T>接口的類的擴(kuò)展方法。
IEnumerable <T>集合的類型是內(nèi)存中的集合,例如List,Dictionary,SortedList,Queue,HashSet,LinkedList。
靜態(tài)Queryable類包括用于實(shí)現(xiàn)IQueryable <T>接口的類的擴(kuò)展方法。
遠(yuǎn)程查詢提供程序?qū)崿F(xiàn)了例如Linq-to-SQL,LINQ-to-Amazon等。