ForEach - 你在哪里?

时间:2011-07-13 02:34:58

标签: c# linq

  

可能重复:
  Why is there not a ForEach extension method on the IEnumerable interface?

我喜欢List< T>上的.ForEach方法在C#中。这怎么不是IEnumerable< T>上的扩展方法套件之一?

为什么我必须调用.ToList()我的集合才能在每个元素上调用一个动作?请告诉我为什么?谢谢。

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

2 个答案:

答案 0 :(得分:3)

语言已整合查询(LINQ)。不是语言集成扩展(LIE)。

您特别谈到LINQ到对象。其他LINQ(to-SQL,to-XML)等在实现任意逻辑时会遇到更多麻烦。

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

public static class Extensions
{
   public static void ForEach<T> (this IEnumerable<T> items, Action<T> action)
   {
      foreach (T item in items)
      {
         action (item);
      }
   }
}

答案 1 :(得分:1)