“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); }
使用 ToList() 扩展方法是您的最佳选择:
someValues.ToList().ForEach(x => list.Add(x + 1));
BCL 中没有直接实现 ForEach 的扩展方法。
尽管 BCL 中没有扩展方法可以执行此操作,但命名空间 中 仍然有一个选项System…如果您将Reactive Extensions添加到项目中:
System
using System.Reactive.Linq; someValues.ToObservable().Subscribe(x => list.Add(x + 1));
这与上述使用 具有相同的最终结果ToList,但(理论上)更有效,因为它将值直接流式传输到委托。
ToList