lambda表示式實際上是乙個匿名函式。它包含表示式和語句,常用於建立委託或表示式目錄樹型別。所有lambda表示式都是用lambda運算子---------- =>,該運算子讀為「goesto」。lambda運算子的左邊是輸入引數(可能沒有),右邊是表示式或語句塊。lambda表示式返回右邊表示式的結果。其基本格式如下:
(input paramenters)=>expression
其中,parameters是乙個引數列表,在lambda只有乙個輸入引數時可以不適用括號,否則括號是必須的。兩個或更多輸入引數由括在括號中的逗號分隔,如以下**所示,包括兩個引數x和y。
(x,y)=> x==y
通常lambda表示式的引數都是可變型別的,由編譯器自動確定它的具體型別。但有時編譯器難於或無法推斷輸入型別,就需要為引數顯示指定型別,既在引數之前新增引數型別。如下所示的lambda表示式包括連個引數x和s。其中x是int型別,而s則是string型別。
(int x, string s) =>s.length > x
當lanbda表示式沒有引數時,需要使用空的括號表示,如下所示。其中,「()」表示沒有引數,而amethod()是乙個具體的方法,該方法的返回值就是lambda表示式的結果。
() => amethod()
由於lambda表示式實際是匿名函式,它可以賦值到乙個委託,而在ienumerable的方法中很多都通過函式委託來實現自定義的運算、條件等操作,所以lambda表示式在linq中被廣泛使用。
常用例項:
1.用where()方法進行篩選
using system; using system.linq;
//查詢所有值大於3被索引的元素 var query2 = intary.where((num, index) => num > index * 3); console.writeline("query2:"); foreach (var item in query2) ", item); } } } }
2.用orderby()方法進行排序
using system; using system.linq;
//對所有元素按照%10進行降序排列 var query2 = intary.orderbydescending(val => val % 10); console.writeline("query2:"); foreach (var item in query2) ", item); } } } }
以上的兩個排序demo都是採用預設的int排序比較器,在一些開發中,以下兩種情況需要使用特定的資料比較器:
3.用skip()、skipwhile()跳過元素
using system; using system.linq; using system.collections.generic;
//跳過intary中小於5的元素 var query2 = intary.skipwhile(num => num < 5); console.writeline("query2"); foreach (var item in query2) ", item); } } } }
4.用take()、takewhile()提取元素
using system; using system.linq; using system.collections.generic;
//取intary中小於5的元素 var query2 = intary.takewhile(num => num < 5); console.writeline("query2"); foreach (var item in query2) ", item); } } } }
5.對元素進行數值計算
6.用distinct()消除集合中相等的元素
using system; using system.linq;
7.用concat()連線兩個集合
注意:concat()方法是直接將兩個集合中的元素連線在一起,不會進行重新排序、過濾等,就算兩個集合中元素有重複也同樣保留。
8.集合操作
說到集合,很容易想起並集、交集、差集3種常用操作。在linq中,ienumerable類分別通過union()、intersect()、except完成這3種操作()。
using system; using system.linq;
var query2 = intary1.intersect(intary2); console.writeline("交集"); foreach (var item in query2)
lambda表示式 lambda表示式
1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...
lambda表示式簡單介紹
參考 捕獲外部變數列表 函式引數列表 mutable 或 exception 宣告 返回值型別 各項含義 capture list 捕獲外部變數列表 params list 形參列表 mutable指示符 用來說用是否可以修改捕獲的變數 exception 異常設定 return type 返回型別...
Lambda表示式的簡單介紹
沒有使用lambda的 button.addactionlistener new actionlistener 使用lambda button.addactionlistener actionevent 讓我們來看乙個更明顯的例子 不採用lambda的老方法 runnable runnable1 n...