av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

LinqLambda表達(dá)式概括

在向大家詳細(xì)介紹Linq之前,首先讓大家了解下Linq Lambda表達(dá)式,以后全面介紹Linq。

烏什ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

Linq Lambda表達(dá)式

接下來我們通過一個例子來看一下Linq Lambda表達(dá)式:我們現(xiàn)在想給ClassCollection增加一個過濾方法,方法的目的是能夠過濾返回班級名稱為“***一班”的集合來。

1.偉大的Microsoft又給我們提供了一種更簡潔的寫法,這也就是我們所說的Linq Lambda表達(dá)式了:

 
 
 
  1. private static void LambdaLinq()
  2. {
  3. var classes = GetClasses();
  4. string className = "***一班";
  5. //4 C#3.0 Lambda表達(dá)式
  6. var result = classes.Filter(c=> c.Name == className);
  7. foreach (var item in result)
  8. {
  9. Console.WriteLine(item.ID+ " " + item.Name);
  10. }
  11. }

“=>”左邊的就是我們上面匿名方法的參數(shù)列表,右邊的是方法里,實際上Linq Lambda表達(dá)式也可以寫成如下形式:

 
 
 
  1. Class c => c.Name == className
  2. (Class c) => c.Name == className
  3. (Class c) => {return  c.Name == className;}
  4. (x,y)=>x+y;//多參數(shù)

等等,函數(shù)的返回類型也是由編譯器根據(jù)"=>"右邊的表達(dá)式自動推斷出來的。

而且需要提到的是由于Filter是擴(kuò)展方法的緣故,而且Filter方法返回類型是ClassCollection,所以可以無限擴(kuò)展下去,例如

 
 
 
  1. var result = classes.Filter( c => c.Name == className).Filter(c=>c.ID>1);

這就是擴(kuò)展方法的魅力所在!

2.實際上不知不覺,我們已經(jīng)實現(xiàn)了Linq里面的一個Where功能了,然后會發(fā)現(xiàn)classes這個實例會增加了很多擴(kuò)展方法例如Where,OrderBy,這些方法實際上就是一些給實現(xiàn)了IEnumerable接口的類型的擴(kuò)展方法,說白了就是針對集合類型的一些相關(guān)方法,比如過濾、排序、合并、分組等方法,這些方法的返回類型依然是IEnumerable(大家可以把光標(biāo)移動到Where方法上,然后調(diào)用“轉(zhuǎn)到定義”去看看這些方法的定義就明白了)當(dāng)然這些方法都離不開我們的Lambda表達(dá)式做參數(shù)。

 
 
 
  1. private static void LambdaLinq()
  2. {
  3. var classes = GetClasses();
  4. string className = "***一班";
  5. //5 C#3.0里面的Where擴(kuò)展方法(專門給實現(xiàn)了IEnumerable接口的類做擴(kuò)展)
  6. var result = classes.Where(c => c.Name == className);
  7. foreach (var item in result)
  8. {
  9. Console.WriteLine(item.ID+ " " + item.Name);
  10. }
  11. }

3.這樣寫針對IEnumarable類型的查詢其實已經(jīng)不錯了,微軟覺得還不過癮,又提供了我們傳說中的Linq Lambda表達(dá)式

 
 
 
  1. private static void LambdaLinq()
  2. {
  3. var classes = GetClasses();
  4. string className = "***一班";
  5. //6 Linq查詢表達(dá)式
  6. var result = from c in classes where 
    c.Name==className orderby c.ID select c;
  7. foreach (var item in result)
  8. {
  9. Console.WriteLine(item.ID+" "+item.Name);
  10. }
  11. }

到這時候你還認(rèn)識原來的擴(kuò)展方法嗎?所以說語言的抽象確實很好用,和人的思維很接近,但是我們還是要看到它的本質(zhì),其實它的本質(zhì)都是面向?qū)ο蟮囊恍〇|西,并沒有創(chuàng)造出一些什么新的東西來,這樣我們才可以真正理解語言。


文章題目:LinqLambda表達(dá)式概括
本文路徑:http://uogjgqi.cn/article/dhophpi.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流