LINQ重要組成部分簡(jiǎn)介
Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ重要組成部分,包括介紹Linq的查詢語(yǔ)法等方面。
為了讓Linq的查詢語(yǔ)法更接近于C#和VB.NET, C# 3.0和VB.NET 9.0基于的模板、匿名方法和迭代器都是LINQ重要組成部分,其中包括了以下的重要特性:
1.隱藏類型的本地變量
C# 3.0提供了一個(gè)新的關(guān)鍵子var,這樣程序員就可以不需要明確的定義一個(gè)本地變量,而是由編譯器根據(jù)表達(dá)式來初始化該變量。比如: var name="Linq";通過該項(xiàng)特性,不再需要重復(fù)本地變量的類型,編譯器會(huì)自動(dòng)的推動(dòng)類型,同時(shí)支持強(qiáng)類型。而且可以省去在foreach循環(huán)中定義迭代器類型
2.對(duì)象初始化程序
該特性讓我們能夠在對(duì)象定義的時(shí)候就給相應(yīng)的字段和屬性賦值.例如:
- class Person
- {
- ......
- public string Name { get; set; }
- public int Age { get; set; }
- public string Nation { get; set; }
- ......
- }
通過該特性就可以在一句聲明語(yǔ)句中初始化該變量
- var linq = new Person { Name = "Linq", Age = "2", Nation = "USA" };
對(duì)于集合也是一樣:
- ......
- var linqs = new List<Person>[]{
- new Person{Name="Linq to SQL",Age=1,Nation="USA"},
- new Person{Name="Linq to XML",Age=2,Nation="UK"},
- new Person{Name="Linq to DataSet",Age=3,Nation="GR"}
- };
- ......
就類似于用Add方法添加對(duì)象。但是要注意必須是實(shí)現(xiàn)了IEnumerable接口和提供了Add方法的類.
3.Lambda表達(dá)式
linq => linq.Age==2
(輸入?yún)?shù)) (操作符) (表達(dá)式或是聲明模塊)
在沒有定義參數(shù)類型的情況下,輸入?yún)?shù)為隱藏類型。當(dāng)然可以定義具體類型,比如(Person linq)
4.擴(kuò)展方法
其實(shí)最簡(jiǎn)單的實(shí)現(xiàn)就是在第一個(gè)參數(shù)前加上this關(guān)鍵字。因?yàn)閠his關(guān)鍵字指示編譯器把該方法作為擴(kuò)展方法對(duì)待。但是擴(kuò)展方法必須是聲明在非模板靜態(tài)類。
5.匿名類
其實(shí)匿名類只是沒有類型名稱而已,而實(shí)際的類型則由編譯器在創(chuàng)建時(shí)確定.例如:
- var linq=new{"SQL to Object",4,"CN"};
該特性的好處是在快速返回簡(jiǎn)單的臨時(shí)結(jié)果,有利于開發(fā)。但是也有它的局限性在里面。主要是不能夠利用強(qiáng)類型的方式進(jìn)行類的操作,同時(shí)不能用作方法的返回值 (除非該方法的返回值是Object類型)。還有就是在C#中匿名類是不可變的,也就是一旦創(chuàng)建就不能改變當(dāng)中的屬性值。以上介紹LINQ重要組成部分。
【編輯推薦】