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運算式,有不對的地方或者需要補充的地方希望大家來共同討論,明天將會總結擴充方法的部分。