有没有办法在List中的每个对象上调用一个方法 - 例如
而不是
List<MyClass> items = setup();
foreach (MyClass item in items)
item.SomeMethod();
您可以执行类似
的操作foreach(items).SomeMethod();
内置任何东西,扩展方法,还是我只是太懒了?
答案 0 :(得分:46)
是的,在List<T>
上,有:
items.ForEach(item => item.SomeMethod())
奇怪的是,这仅适用于List<T>
,而不是IList<T>
或IEnumerable<T>
要解决此问题,我想添加以下扩展方法:
public static class IEnumerableExtensions
{
public static void ForEach<T>(this IEnumerable<T> items, Action<T> action)
{
foreach(var item in items)
action(item);
}
}
然后,您可以在实施IEnumerable<T>
的任何内容上使用它...而不仅仅是List<T>
答案 1 :(得分:15)
items.ForEach(i => i.SomeMethod());
答案 2 :(得分:4)
列表采用ForEach方法。您还可以创建IEnumerable扩展方法but it kind of goes against the spirit of Linq。
答案 3 :(得分:1)