成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linq Lambda表達式概括

開發 后端
這里介紹Linq Lambda表達式,偉大的Microsoft又給我們提供了一種更簡潔的寫法,這也就是我們所說的Linq Lambda表達式了。

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

Linq Lambda表達式

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

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

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

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

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

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

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

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

這就是擴展方法的魅力所在!

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

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

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

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

到這時候你還認識原來的擴展方法嗎?所以說語言的抽象確實很好用,和人的思維很接近,但是我們還是要看到它的本質,其實它的本質都是面向對象的一些東西,并沒有創造出一些什么新的東西來,這樣我們才可以真正理解語言。

【編輯推薦】

  1. LINQ to SQL查詢分析
  2. LINQ查詢架構簡單介紹
  3. LINQ to SQL映射關系概述
  4. LINQ To SQL對象模型淺析
  5. LINQ to SQL映射列描述
責任編輯:佚名 來源: IT168
相關推薦

2009-09-15 17:30:00

Linq Lambda

2009-09-09 13:01:33

LINQ Lambda

2009-09-11 09:48:27

Linq Lambda

2009-09-17 09:44:54

Linq Lambda

2009-09-17 10:40:22

Linq Lambda

2009-09-09 17:14:17

Linq lambda

2009-09-17 09:09:50

Lambda表達式Linq查詢

2009-09-11 12:32:33

LINQ表達式

2011-10-28 16:34:13

LINQ

2009-09-10 15:35:07

LINQ查詢表達式

2009-09-09 17:45:07

Linq表達式

2009-09-17 14:21:19

LINQ表達式

2022-12-05 09:31:51

接口lambda表達式

2009-09-07 17:18:33

LINQ查詢表達式

2009-09-11 09:53:16

Linq查詢表達式

2009-09-17 09:15:49

Linq表達式樹

2009-08-27 09:13:28

LINQ查詢表達式

2009-09-17 11:08:55

LINQ查詢表達式

2009-08-27 09:44:59

C# Lambda表達

2012-06-26 10:03:58

JavaJava 8lambda
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 999久久久久久久 | 亚洲成人在线视频播放 | 国产精品久久久一区二区三区 | 夜夜精品视频 | 亚洲精品国产电影 | 欧美另类日韩 | 久久久久久亚洲国产精品 | 国产一区二区三区网站 | 黄色在线播放视频 | 婷婷久久一区 | 日韩视频观看 | 黄色一级毛片 | 成人国产精品久久 | 日韩在线视频一区 | 成人亚洲视频 | 久久综合一区二区 | 国产激情视频网址 | 国产内谢 | 国产精品网页 | 亚洲精品乱码 | 国产精品污www在线观看 | 中文字幕第十五页 | 久久久爽爽爽美女图片 | 成人亚洲视频 | 亚洲视频免费一区 | 国产成人免费视频网站视频社区 | 成人久久18免费网站 | 992人人草| 欧美中文字幕 | 久久精品国产一区二区电影 | 1级黄色大片| 波多野结衣av中文字幕 | 亚洲成人精品 | 欧美成人一区二免费视频软件 | 一区二区av | 午夜欧美 | 日韩av免费看 | 一级a爱片性色毛片免费 | 91久久精 | 国产又色又爽又黄又免费 | 91色啪 |