如何使用一行代码在 C# 中连接两个数组

Ale*_*xey 0 c# linq

我有 C# 代码:

string[] names = new [] { "a", "b", "c" };
int[] vals = new[] { 5, 10, 15 };
r = "";
for( int i = 0; i < names.Length; i++ )
r += names[i] + ": " + vals[i] + " ";
Run Code Online (Sandbox Code Playgroud)

在 python 中我可以写 oneliner

r = " ".join( [ names[i] + ":" + str(vals[i]) for i in range(len(names)) ] )
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 C# 中做到这一点?

Jon*_*eet 6

我会对Python 代码采取稍微不同的方法 - 我会使用LINQ“zip”运算符来生成要连接在一起的字符串序列,然后使用string.Join它们来连接它们:

string result = string.Join(" ", names.Zip(values, (n, v) => $"{n}:{v}");
Run Code Online (Sandbox Code Playgroud)

所以其中:

  • names.Zip(values, <something>)部分根据将“某物”应用于names和中的每对值来生成一系列值values
  • (n, v) => $"{n}:{v}"部分采用名称和值,并将它们的格式设置为名称:值。
  • string.Join(" ", <sequence>)部分将序列元素连接在一起,每对值之间有一个空格。

请注意,与原始 C# 代码不同,这不会以尾随空格结束。