【发布时间】:2012-08-22 22:24:00
【问题描述】:
如果我有类似的东西:
Dictionary<SomeObject, SomeOtherObject> _mydictionary
而SomeObject 有一个方法:SomeMethod()
如何使用 lambda 表达式调用方法 SomeMethod() 而无需将键转换为列表并执行 ForEach。 ToList() 太贵了。或者,lambda 中的等价物:
foreach(SomeObject o in _mydictionary.Keys)
o.SomeMethod();
???
我试过了:
_mydictionary.ToList().ForEach(x => x.SomeMethod());
但这对于ToList();来说似乎太贵了
【问题讨论】:
-
FWIW,我会坚持使用您的
foreach循环。它非常清晰简洁。 -
对于好奇的人来说,这里有一个合理的解释为什么 IEnumerable 没有 ForEach 扩展方法:“foreach” vs “ForEach”
-
ForEach() 在 List
上,而不是 IEnumerable 的扩展方法,所以如果你不编写自己的 ext 方法,是的,你必须使用 ToList()或foreach