Lambda语句的嵌套

Posted mol1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lambda语句的嵌套相关的知识,希望对你有一定的参考价值。

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

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语句的嵌套的主要内容,如果未能解决你的问题,请参考以下文章

Lambda语句的嵌套

Python内嵌函数与Lambda表达式

VS2010 中的 C++ 嵌套 lambda 错误,带有 lambda 参数捕获?

在嵌套 lambda 的情况下如何初始化 lambda 捕获?

哪个更可取:lambda 函数或嵌套函数('def')?

如何使用 lambda 流迭代嵌套列表?