加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 难以理解特定的lambda表达式

发布时间:2020-12-16 00:23:14 所属栏目:百科 来源:网络整理
导读:对于一个熟悉lambda的人来说,这是一个非常简单的问题.我刚刚学习它,并遇到了一个对我没有意义的表达. 根据我的理解,lambda表达式传入左侧指定的变量并运行右侧的代码.例如 myFunction = x = x + x; 所以myFunction(2)会返回4. 无论如何,我在这里看了一个linq
对于一个熟悉lambda的人来说,这是一个非常简单的问题.我刚刚学习它,并遇到了一个对我没有意义的表达.

根据我的理解,lambda表达式传入左侧指定的变量并运行右侧的代码.例如

myFunction = x => x + x;

所以myFunction(2)会返回4.

无论如何,我在这里看了一个linq查询,看到了这个:

IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

n =>那……那是做什么的?为什么不说OrderBy(n)?你正在做的就是将n传递给一个只返回n的函数. > _>这里发生了什么事?

解决方法

让我们打破这个:

numbers

这是一个整数集合.

.Where(num => num % 2 == 0)

这就是说“在我的收藏中找到我的数字模数2 = 0”的所有项目.

.OrderBy(n => n);

然后这是对列表进行排序.因为列表是整数,并且指定的项是整数,所以它将按数字排序,从最低到最高.

你需要n =>的原因n是因为你可以通过除值之外的其他东西进行排序.例如,将项目的长度称为字符串

.OrderBy(n => n.ToString().Length)

显然,对于整数,这没有任何意义.但是对于其他数据类型,比如类,这非常有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读