LINQ學習筆記(3) lambda運算式

來源:互聯網
上載者:User

  lambda運算式在LINQ中使用非常多,所以要想學好LINQ,那麼必須先瞭解什麼是lambda運算式,以及它是如何使用的。

首先們看一個lambda運算式在LINQ查詢中的應用的例子,我想通過這個例子我們能夠更快地理解lambda運算式。

例如:

 1 class Program
2 {
3 static void Main(string[] args)
4 {
5 int[] numbers = { 2,5,28,31,17,16,42}; //建立資料來源。
6
7 var numsMethod = numbers.Where(x => x < 20);//x=>x<20即為lambda運算式。
8
9 foreach (var x in numsMethod) //使用foreach語句遍曆結果。
10 {
11 Console.Write("{0}",x);
12 Console.WriteLine();
13 }
14
15 Console.ReadKey();
16 }
17 }

  程式輸出結果為:

 

通過這個例子,我想大家已經看到了lambda運算式在LINQ查詢中的使用,那麼接下來我們來詳細瞭解一下什麼是lambda運算式。

1,什麼是lambda運算式?

  據查資料,lambda運算式來源於數學家Alonzo Church等人在1920年到1930年間發明的lambda積分。lambda積分是用於表示函數的一套系統,它使用希臘字母lambda(λ)來表示無名函數。近來,諸如Lisp和其方言的函數式程式設計語言使用這個術語來表示可以直接用於描述函數定義的運算式,運算式不再需要名字了。

2,lambda運算式的作用?

  簡化匿名方法。

3,匿名方法轉化為lambda運算式?

  我們可以通過如下步驟將匿名方法轉換為lambda運算式。

  1> 刪除delegate關鍵字。

  2> 在參數列表和匿名方法主體之間放lambda運算子=>。lambda運算子讀作"goes to"。

  如下代碼示範了這種轉換。

MyDel del = delegate(int x) { return x + 1; };//匿名方法。將匿名方法賦值給變數del。
MyDel del1 = (int x) => { return x + 1; };//lambda運算式。
MyDel del2 = (x) => { return x + 1; };//lambda運算式。
MyDel del3 = x => { return x + 1; };//lambda運算式。
MyDel del4 = x => x+1;//lambda運算式。

4,lambda運算式的參數列表的要點?

  1> lambda運算式參數列表中的參數必須在參數數量,類型和位置上與委託相匹配。

  2> 運算式的參數列表中的參數不一定需要包含類型(如隱式類型),除非委託有ref或out參數-此時類型是必須的(如顯式類型)。

  3> 如果只有一個參數,並且是隱式類型,周圍的圓括弧可以被省略,否則它就是必須的。

  4> 如果沒有參數,必須使用一組空的圓括弧。

以上就是今天總結的lambda運算式,有不對的地方或者需要補充的地方希望大家來共同討論,明天將會總結擴充方法的部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.