語言集成查詢(Language-Integrated Query),簡稱LINQ,.NET中的LINQ體系如下圖所示:
在編程語言層次,LINQ對于不同的數(shù)據(jù)源提供了相同的查詢語法,方便了程序員操作不同的數(shù)據(jù)源。
可查詢類型
LINQ之所以能夠使用相同的語法操作不同的數(shù)據(jù)源,是因?yàn)楹蚅INQ直接打交道的是可查詢類型而非數(shù)據(jù)源,在LINQ中,直接或間接實(shí)現(xiàn)了IEnumerable<T>
接口的類型稱為可查詢類型, .NET中如:List<T>
,Dictionary<TKey,TValue>
,數(shù)組(由CLR負(fù)責(zé)隱式實(shí)現(xiàn)IEnumerable<T>接口)等,實(shí)現(xiàn)了IEnumerable<T>接口。
IQueryable<out T>繼承自IEnumerable<T>,是個(gè)標(biāo)記接口。
可查詢類型無需額外操作即可進(jìn)行LINQ操作,若數(shù)據(jù)源在內(nèi)存中不以可查詢類型的形式存在,那么LINQ提供程序必須要先將數(shù)據(jù)源轉(zhuǎn)換為可查詢類型,如LINQ to XML
將XML文件轉(zhuǎn)換為可查詢的XElement
類型:
XElement contacts = XElement.Load(@"c:\myContactList.xml"<