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


















