我有两个字符串数组,我希望它们成为一个具有不同值的字符串数组,如下所示:
string[] array1 = { "Jhon", "Robert", "Elder" };
string[] array2 = { "Elena", "Margareth", "Melody" };
我想要这样的输出:
{ "Jhon and Elena", "Robert and Margareth", "Elder and Melody" };
我使用了string.Join
,但是它仅适用于一个字符串数组。
答案 0 :(得分:29)
听起来您想从LINQ获得Zip
:
var result = array1.Zip(array2, (left, right) => $"{left} and {right}").ToArray();
Zip
采用两个序列,并将给定的委托依次应用于每对元素。 (因此,每个序列的第一个元素,然后每个序列的第二个元素,等等)
答案 1 :(得分:2)
另一种解决方案假设两个数组的长度始终相同。
var result = array1.Select((e, i) => $"{e} and {array2[i]}").ToArray();
尽管我不得不承认这不像其他答案中的Zip
那样可读。
另一种解决方案是通过Enumerable.Range
:
Enumerable.Range(0, Math.Min(array1.Length, array2.Length)) // drop Min if arrays are always of the same length
.Select(i => $"{array1[i]} and {array2[i]}")
.ToArray();