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


130

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

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

我只是想看看冷凝是否更容易。

Answers:


244

是的,Enumerable.Skip可以满足您的需求:

contents.Skip(1)

但是,如果要使用数组,则结果为IEnumerable <T>:

contents.Skip(1).ToArray()

也可以将contents数组包装在该ArraySegment<>结构的新实例中。当时上面的回答是书面的,这不是特别有用的,但由于.NET 4.5的ArraySegment<>器具IList<>IReadOnlyList<>以及它们的碱接口(包括IEnumerable<>),所以可以例如是通过ArraySegment<>string.Join
杰普·斯蒂格·尼尔森

尽管我讨厌Linq,但我决定忍受这一点,只是因为它是在静态构造函数中运行的,每次应用程序启动一次,因此不存在性能开销。
Krythic

7

以下内容等效于您的for循环:

foreach (var item in contents.Skip(1))
    Message += item;

1
你想要var item吗??
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.