从数组中获取除第一个元素之外的所有元素

158

是否有一行简单的Linq表达式可以从一个简单数组中获取除第一个元素之外的所有内容?

for (int i = 1; i <= contents.Length - 1; i++)
    Message += contents[i];

我只是想看看是否更容易压缩。


使用 StringBuilder 而不是连接字符串更好。 - Estevez
2个回答

301
是的,Enumerable.Skip可以实现你想要的功能。
contents.Skip(1)

然而,结果是一个IEnumerable<T>类型,如果你想要得到一个数组,请使用以下方法:

contents.Skip(1).ToArray()

还可以将contents数组包装在ArraySegment<>结构的新实例中。在上面的答案编写时,这并不是特别有用的,但自.NET 4.5以来,ArraySegment<>实现了IList<>IReadOnlyList<>及其基接口(包括IEnumerable<>),因此您可以将ArraySegment<>传递给string.Join等方法。 - Jeppe Stig Nielsen
尽管我很讨厌Linq,但我决定能够容忍它,只因为它是在静态构造函数中运行的,每次应用程序启动只运行一次,因此性能开销不存在。 - Krythic

7
以下代码等同于您的for循环:
foreach (var item in contents.Skip(1))
    Message += item;

2
你需要 var item 吗? - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接