【发布时间】:2010-04-09 21:47:42
【问题描述】:
是否有一个简单的 linq 表达式可以从一个简单数组中获取除第一个元素之外的所有内容?
for (int i = 1; i <= contents.Length - 1; i++)
Message += contents[i];
我只是想看看是不是更容易浓缩。
【问题讨论】:
-
与其串联字符串,不如使用StringBuilder。
是否有一个简单的 linq 表达式可以从一个简单数组中获取除第一个元素之外的所有内容?
for (int i = 1; i <= contents.Length - 1; i++)
Message += contents[i];
我只是想看看是不是更容易浓缩。
【问题讨论】:
是的,Enumerable.Skip 做你想做的事:
contents.Skip(1)
然而,结果是一个 IEnumerable
contents.Skip(1).ToArray()
【讨论】:
contents 数组包装在ArraySegment<> 结构的新实例中。在编写上述答案时,这并不是特别有用,但由于 .NET 4.5,ArraySegment<> 实现了IList<>、IReadOnlyList<> 及其基本接口(包括IEnumerable<>),因此您可以例如传递一个ArraySegment<> 到 string.Join.
以下内容等同于您的 for 循环:
foreach (var item in contents.Skip(1))
Message += item;
【讨论】:
var item 吗??