码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda语句的嵌套

时间:2017-09-10 12:33:14      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:方法   names   成员   where   注意   ble   str   表达   重复   

// 获取所有长度最短的名字(注意:可能有多个)

string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IEnumerable<string> outQuery = names
.Where(
    n => n.Length == names.OrderBy(n2 => n2.Length).Select(n2 => n2.Length).First()
            );

//注意,上面的==两端分别是两个长度int类型表达式,右端的orderby子句输出仍是names原型,只不过顺序变为升序了;再select是在此升序结果上取所有names成员的长度,这里转换了序列的类型由string变成了int,最后first取出最小的一个长度。

如果用Min方法,上面可简写为:

 IEnumerable<string> outQuery = names
    .Where(
                n => n.Length == names.Min(n2=>n2.Length)  

//注意:Min不同于Math中的Min函数,它也只能用lambda表达式做参数,且n2不能与重复用n,因为它们在同一级别相同。甚至在Min的表达式中还可用到n,如names.Min(n2=>n2.Length+n.Length),在这里只看语法,没有具有意义
                );

 

Lambda语句的嵌套

标签:方法   names   成员   where   注意   ble   str   表达   重复   

原文地址:http://www.cnblogs.com/mol1995/p/7500569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!