在C#中转换数组的优雅方式?

And*_*ant 4 c# linq

是否有一个很好的LINQ(或其他)方法通过对现有数组的每个元素执行转换来创建新数组?

例如,替代:

List<int> numbers = new List<int>();
foreach(string digit in stringArray)
{
  numbers.Add(Convert.ToInt32(digit));
}
return numbers.ToArray();
Run Code Online (Sandbox Code Playgroud)

BFr*_*ree 8

return stringArray.Select(s => Convert.ToInt32(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)


Ada*_*ras 8

像这样的东西?

int[] numbers = stringArray.Select(s => Convert.ToInt32(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)

或者,使用查询语法:

int[] numbers = (from s in stringArray
                 select Convert.ToInt32(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)


Don*_*nut 5

是的!LINQ非常适合这类事情.以下是使用查询语法的示例:

return (from s in stringArray 
        select Convert.ToInt32(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)

BFree的答案是方法语法等价.这是关于两者之间差异的MSDN文章.