Linq自学系列(二)
Lambda表达式
这玩意很复杂的说。慢慢弄
先来个简单的
var ls = new[] { "a", "ab", "ba","c" };
var rs = Array.FindAll(ls, s => (s.IndexOf("a") > -1));
foreach (var s1 in rs)
{ listBox1.Items.Add(s1); }
这里 s => (s.IndexOf("a") > -1) 就是说 在指定的ls字符串数组中筛选含 “a” 的字符串。var rs = Array.FindAll(ls, s => (s.IndexOf("a") > -1));
foreach (var s1 in rs)
{ listBox1.Items.Add(s1); }
语法如下:
(参数列表) => 表达式或者语句块
其中:
参数个数:可以有多个参数,一个参数,或者无参数。
表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体)。
其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有0个或1个以上参数,则必须使用括号括住参数列,如下:
()=>Console.Write("0个参数")
i=>Console.Write("1个参数时参数列中可省略括号,值为:{0}",i)
(x,y) =>Console.Write("包含2个参数,值为:{0}*{1}",x,y)
而“语句或语句块”中如果只有一条语句,则可以不用大括号括住否则则必须使用,如下:
i=>Console.Write("只有一条语句")
i=>{Console.Write("使用大括号的表达式");}
//两条语句时必须要大括号
i=>{i++;Console.Write("两条语句的情况");}