关于c#:ForEach – 你在哪里?

ForEach — where are you?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why is there not a ForEach extension method on the IEnumerable interface?

我喜欢C中list上的.foreach方法。这不是IEnumerable上的一组扩展方法吗?

为什么我必须调用.tolist()我的集合才能对每个元素调用操作?请告诉我为什么?谢谢您。

1
List<T>.ForEach(Action<T> action);


语言集成查询(LINQ)。不是语言集成扩展(谎言)。

您特别提到的是Linq to对象。其他Linq(到SQL、到XML)等在实现任意逻辑时会遇到更多的困难。

但是,没有什么能阻止你自己实现它。

1
2
3
4
5
6
7
8
9
10
public static class Extensions
{
   public static void ForEach<T> (this IEnumerable<T> items, Action<T> action)
   {
      foreach (T item in items)
      {
         action (item);
      }
   }
}


关于这个话题有很多讨论:

见:

  • ienumerable的foreach的linq等价物
  • 使用foreach子句的lambda表达式