是否有更简洁的方法从数组中提取(n> i)个元素?

时间:2019-02-13 14:39:53

标签: c#

我需要一段代码,该代码能够提取长度为l的字符串数组,并提取i之后的所有元素,其中i是一个特殊的索引小于l,然后将提取的元素放入新数组中。

基本上,如果我们具有以下条件:

["A", "B", "C", "D", "E", "F"]

在这种情况下,l = 6,如果我们采用n = 3,则代码应创建一个新数组

["D", "E", "F"]

我已经写出了代码来执行此操作,但是我不禁想到有一种更好,更简洁的方法来实现它。

这就是我所拥有的:

List<string> tempElements = new List<string>();

for (int i = startOfMessage; i < elements.Length; i++)
{
    tempElements.Add(elements[i]);
}

string[] usableMessageElements = tempElements.ToArray();

一个相对简单的问题,但我的目标是尽可能减少初级代码。

2 个答案:

答案 0 :(得分:9)

听起来您只想使用LINQ中的Skip

string[] usableMessageElements = elements.Skip(startOfMessage).ToArray();

答案 1 :(得分:3)

您的代码看起来不错,但是您可以使用Array。Copy

 public string[] Extract(string[] source, int offset)
 {
        string[] strings = new string[source.Length - offset];
        Array.Copy(source, offset, strings, 0, strings.Length);
        return strings;
 }
 //...

 string[] usable = Extract(new[] { "A", "B", "C", "D", "E", "F" }, 3); //D, E, F

不是很短,但是更快(1,000,000次迭代):

添加到列表:226.0038 ms

阵列复制:107.4445毫秒