我想通过LINQ查询在每个对象上调用MyMethod,这样做的最佳方法是什么?
目前我正在使用:
.Select(x => { x.MyMethod (); return x; }).ToArray();
Run Code Online (Sandbox Code Playgroud)
立即执行需要ToArray().
有没有更简单的方法来写这个(没有foreach)
谢谢
您可以指定自己的可重用扩展方法,该方法Action<>在每个元素上运行,yield会返回它.
IEnumerable<T> Do(this IEnumerable<T> vals, Action<T> action) {
foreach(T elem in vals) {
action(elem);
yield return elem;
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法包含在命名空间下的Rx库中System.Interactive.然后你就可以做到
myCollection.Do(x => x.MyMethod()).ToArray();
Run Code Online (Sandbox Code Playgroud)