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