Linq风格“针对每个人”

斯蒂芬·斯坦格

“对于每个”操作是否有任何Linq样式语法?

例如,将基于一个集合的值添加到另一个已经存在的集合中:

IEnumerable<int> someValues = new List<int>() { 1, 2, 3 };

IList<int> list = new List<int>();

someValues.ForEach(x => list.Add(x + 1));

代替

foreach(int value in someValues)
{
  list.Add(value + 1);
}
马克·西曼

最好使用ToList()扩展方法:

someValues.ToList().ForEach(x => list.Add(x + 1));

BCL中没有直接实现ForEach的扩展方法。


虽然有一个在没有扩展方法BCL做这个,也就是还处于一个选项System命名空间......如果你添加无扩展到您的项目:

using System.Reactive.Linq;

someValues.ToObservable().Subscribe(x => list.Add(x + 1));

这具有与上面使用相同的最终结果ToList,但是(在理论上)效率更高,因为它直接将值流传输给委托。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章