使用匿名类型调用通用方法(C#)

Den*_*ger 4 c# linq generics extension-methods

让我们说我想迭代a string[][],使用匿名类型追加一个值并对结果执行一个通用的ForEach-Extension方法(很明显的例子,我知道,但我想你会得到它的第一个!).

这是我的代码:

//attrs = some string[][]
attrs.Select(item => new { name = HttpContext.GetGlobalResourceObject("Global", item[0].Remove(0, 7)), value = item[1] })
            .ForEach</*????*/>(/*do stuff*/);
Run Code Online (Sandbox Code Playgroud)

究竟我会在ForEach的Type-Parameter中加入什么?

这是ForEach的样子:

public static void ForEach<T>(this IEnumerable<T> collection, Action<T> act)
{
    IEnumerator<T> enumerator = collection.GetEnumerator();
    while (enumerator.MoveNext())
        act(enumerator.Current);
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*rth 8

您不需要显式指定类型,因为它可以从提供的参数中推断出来:

attrs.Select(item => new 
                     { 
                         name = HttpContext.GetGlobalResourceObject("Global", 
                                                      item[0].Remove(0, 7)), 
                         value = item[1] 
                     })
     .ForEach(x => x.name = "something");
Run Code Online (Sandbox Code Playgroud)