LINQ查询结果的调用方法简洁

Mis*_*ook 1 linq

我想通过LINQ查询在每个对象上调用MyMethod,这样做的最佳方法是什么?

目前我正在使用:

.Select(x => { x.MyMethod (); return x; }).ToArray();
Run Code Online (Sandbox Code Playgroud)

立即执行需要ToArray().

有没有更简单的方法来写这个(没有foreach)

谢谢

Mau*_*Mau 5

您可以指定自己的可重用扩展方法,该方法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)