当前位置:  开发笔记 > 编程语言 > 正文

使用LINQ循环并执行操作而不仅仅是选择数据是不好的做法吗?

如何解决《使用LINQ循环并执行操作而不仅仅是选择数据是不好的做法吗?》经验,为你挑选了2个好方法。

大的主观问题:我经常发现自己使用LINQ来过滤一组对象,然后在查询之后,做一个旧式的foreach来对每个结果执行一个动作.有没有一种很好的方法来组合这两个任务,以便对每个与Where()谓词匹配的对象执行操作?几乎就像将一个Action传递给Select().这可能不会编译,但是如果传入一个返回bool的Func,那么你可以将其嵌入另一个可以对失败或成功做某事的查询中.有人在生产代码中做过这个吗?这会被视为不良做法吗?还有其他想法吗?



1> Jon Skeet..:

很多人都要求一种ForEach方法 - 事实上它方便(这就是为什么我们在MoreLINQ中有一个).这也有潜在危险.

LINQ的大部分都坚定地阻止了副作用.他们是可能的,但气馁.这就是为什么OrderBy等返回新集合而不是排序现有集合.

现在考虑ForEach- 这是一个"行动"而不是一个功能,因为它不会返回任何东西.如果它没有任何副作用,那绝对没有意义!因此,它违背了LINQ的部分理念 - 它基本上没有以功能性的方式接近事物.

我并不想提出充分的理由支持或反对,真的-在实践中,我认为有用的东西有,我并不感到惊讶,它在这么许多图书馆等,这是一个非常明显的伪操作的补充.只要想想你正在做什么,并注意到你正在引入副作用.它是LINQ的功能风格和更强制的编码风格之间的界限.



2> mqp..:

List有一个ForEach()专门为此设计的方法.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有