Linq匿名類型簡單概述
LINQ有很多值得學習的地方,這里我們主要介紹Linq匿名類型,包括介紹Lambda表達式等方面。
LINQ使查詢成為了.NET中頭等的編程概念,被查詢的數據可以是XML(LINQ to XML)、Databases(LINQ to SQL、LINQ to Dataset、LINQ to Entities)和對象(LINQ to Objects)。LINQ也是可擴展的,允許你建立自定義的LINQ數據提供者(比如:LINQ to Amazon、LINQ to NHibernate、LINQ to LDAP)。在這里我會討論C#3.0中的一些新的語言特性和改進,正是它們使得LINQ變得如此強大~~
Linq匿名類型
這個語言特性讓我們可以定義內嵌的類型,而不需要顯式地定義一個類型。換句話說,假設我們沒有定義Point 類,卻要使用一個Point 對象(即類型是匿名的)。我們可以使用上面提到的對象初始化語法,但不用指定類型名:
- var p = new{X = 0, Y = 2};
在VS2008中,你仍然可以使用智能感應。所以如果你繼續(xù)使用變量p,就會得到這個Linq匿名類型的屬性列表。
Lambda表達式
在 C#2.0中引入了匿名方法,允許在需要委托的地方寫一個代碼塊。Linq匿名類型提供了函數式程序語言的能力,語法顯得很簡潔。Lambda表達式提供了一個更簡潔的語法來寫匿名方法。一個Lambda表達式就是一個參數列表(可以隱式類型),然后是一個=>符號,然后是一個表達式或者一個語句塊。
作為一個示例,我們定義一個委托類型MyDeleg :
- MyDeleg<int,bool>
- IsPositive = delegate(int num) {
- return num > 0;
- };
我們也可以使用新的Lambda表達式來寫:
- MyDeleg<int ,bool>
- IsPositive = num => num > 0;
【編輯推薦】