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”  的字符串。
语法如下: 
(参数列表) => 表达式或者语句块
其中:
参数个数:可以有多个参数,一个参数,或者无参数。
表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体)。

其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有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("两条语句的情况");}

 

posted on 2008-05-07 11:38  雲淡風清  阅读(187)  评论(0编辑  收藏  举报