小编典典

Linq 风格“For Each”

all

“For each”操作是否有任何 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);
}

阅读 79

收藏
2022-06-10

共1个答案

小编典典

使用 ToList() 扩展方法是您的最佳选择:

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

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


尽管 BCL 中没有扩展方法可以执行此操作,但命名空间 仍然有一个选项System…如果您将Reactive
Extensions
添加到项目中:

using System.Reactive.Linq;

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

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

2022-06-10