Возможный дубликат:
LINQ эквивалент foreach для IEnumerable <T>
Методы расширения linq для ienumerable очень удобны... но не так полезны, если все, что вы хотите сделать, это применить некоторые вычисления к каждому элементу перечисления, не возвращая ничего. Поэтому мне было интересно, возможно ли, что я просто отсутствовал в правильном методе, или если это действительно не существует, поскольку я бы предпочел использовать встроенную версию, если она доступна... но я не нашел ее: -)
Я мог бы поклясться, что где-то есть метод .ForEach, но я еще не нашел его. Тем временем, я написал свою собственную версию, если она полезна для кого-то еще:
using System.Collections;
using System.Collections.Generic;
public delegate void Function<T>(T item);
public delegate void Function(object item);
public static class EnumerableExtensions
{
public static void For(this IEnumerable enumerable, Function func)
{
foreach (object item in enumerable)
{
func(item);
}
}
public static void For<T>(this IEnumerable<T> enumerable, Function<T> func)
{
foreach (T item in enumerable)
{
func(item);
}
}
}
используется:
myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });