【问题标题】:Get all elements but the first from an array从数组中获取除第一个元素之外的所有元素
【发布时间】:2010-04-09 21:47:42
【问题描述】:

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

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

我只是想看看是不是更容易浓缩。

【问题讨论】:

  • 与其串联字符串,不如使用StringBuilder。

标签: c# linq


【解决方案1】:

是的,Enumerable.Skip 做你想做的事:

contents.Skip(1)

然而,结果是一个 IEnumerable,如果你想得到一个数组使用:

contents.Skip(1).ToArray()

【讨论】:

  • 还可以将contents 数组包装在ArraySegment&lt;&gt; 结构的新实例中。在编写上述答案时,这并不是特别有用,但由于 .NET 4.5,ArraySegment&lt;&gt; 实现了IList&lt;&gt;IReadOnlyList&lt;&gt; 及其基本接口(包括IEnumerable&lt;&gt;),因此您可以例如传递一个ArraySegment&lt;&gt;string.Join.
  • 尽管我很讨厌 Linq,但我决定我可以容忍这一点,只是因为它在静态构造函数中运行,每次应用程序启动一次,因此不存在性能开销。
【解决方案2】:

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

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

【讨论】:

  • 你想要 var item 吗??
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 2018-07-11
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多