c#array collat​​er其中输出的每个其他元素具有相同的值

时间:2017-03-07 03:09:56

标签: c# arrays

这是我正在努力的事情的延伸。 在循环中这很容易,但我想知道我是否能找到单代码行。

这是输入:

byte[] x = new byte[] { (byte)'a', (byte)'b', (byte)'c', (byte)'d' };

无论如何重写你想要的值,但你明白了。你必须从一个字节数组开始,最后得到一个整理的字节数组。

这是所需的输出:

byte[] { (byte)'a', (byte)'z', (byte)'b', (byte)'z', (byte)'c', (byte)'z', (byte)'d', (byte)'z'};

我尝试了各种变体,但从我展示的内容开始,并且知道这本身不起作用。

var y = x.Select(c => new byte[] { c, (byte)'z' });

在一天结束时,由于这些只是字节,因此值并不重要。 只是你可以关联一些给定的值,' z'在这种情况下。 在少数几行中,首选一行,相当简洁明了。

1 个答案:

答案 0 :(得分:4)

你几乎就在那里 - 你只需要使用SelectMany代替Select,就像你创建一系列输出元素的每个输入元素一样......那么你想要压扁了#34;序列序列"成一个序列。这正是SelectMany的作用。

所以:

var y = x.SelectMany(c => new[] { c, (byte)'z' }).ToArray();