如果我有类似的东西:
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(); 来说似乎太昂贵了;
最佳答案
var keys = _mydictionary.Keys;
// convert the enumerable sequence of keys to an observable sequence
var observableKeys = keys.ToObservable ();
// invoke SomeMethod for each key
await observableKeys.ForEachAsync (obj =>
obj.SomeMethod ());
此代码将在调用第一个 SomeMethod 之前执行,而不会阻塞枚举序列的调用,并且不会分配另一个集合。
不幸的是we're waiting for a new release交互式扩展 (Ix) 具有完全相同的功能,而无需从可枚举序列转换为可观察序列。
关于c# - 使用 lambda 表达式调用字典的键对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064878/