自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linq Lambda表達(dá)式概括

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

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

Linq Lambda表達(dá)式

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

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

  1. private static void LambdaLinq()  
  2. {  
  3. var classes = GetClasses();  
  4.  
  5. string className = "***一班";  
  6.  
  7. //4 C#3.0 Lambda表達(dá)式  
  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.  

“=>”左邊的就是我們上面匿名方法的參數(shù)列表,右邊的是方法里,實(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á)式自動(dòng)推斷出來的。

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

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

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

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

  1. private static void LambdaLinq()  
  2. {  
  3. var classes = GetClasses();  
  4. string className = "***一班";  
  5.  
  6. //5 C#3.0里面的Where擴(kuò)展方法(專門給實(shí)現(xiàn)了IEnumerable接口的類做擴(kuò)展)  
  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.這樣寫針對(duì)IEnumarable類型的查詢其實(shí)已經(jīng)不錯(cuò)了,微軟覺得還不過癮,又提供了我們傳說中的Linq Lambda表達(dá)式

  1. private static void LambdaLinq()  
  2. {  
  3. var classes = GetClasses();  
  4. string className = "***一班";  
  5.  
  6. //6 Linq查詢表達(dá)式  
  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.  

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

【編輯推薦】

  1. LINQ to SQL查詢分析
  2. LINQ查詢架構(gòu)簡(jiǎn)單介紹
  3. LINQ to SQL映射關(guān)系概述
  4. LINQ To SQL對(duì)象模型淺析
  5. LINQ to SQL映射列描述
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

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 10:40:22

Linq Lambda

2009-09-17 09:44:54

Linq Lambda

2009-09-09 17:14:17

Linq lambda

2009-09-17 09:09:50

Lambda表達(dá)式Linq查詢

2009-09-11 12:32:33

LINQ表達(dá)式

2009-09-10 15:35:07

LINQ查詢表達(dá)式

2011-10-28 16:34:13

LINQ

2009-09-09 17:45:07

Linq表達(dá)式

2009-09-17 14:21:19

LINQ表達(dá)式

2022-12-05 09:31:51

接口lambda表達(dá)式

2009-08-27 09:13:28

LINQ查詢表達(dá)式

2009-09-17 09:15:49

Linq表達(dá)式樹

2009-09-07 17:18:33

LINQ查詢表達(dá)式

2009-09-11 09:53:16

Linq查詢表達(dá)式

2009-09-17 11:08:55

LINQ查詢表達(dá)式

2012-06-26 10:03:58

JavaJava 8lambda

2009-08-27 09:44:59

C# Lambda表達(dá)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)