爲了讓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之C#3.0語言擴展
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
FX2LP 可以最簡單的Template Code
sychen0608
2020-12-12 19:41:50
C# 數字轉換成文字 十進位 ==> 二進位/十六進位
sychen0608
2020-12-12 19:17:09