LINQ是否有任何简单/优雅的方法将第一个元素放在最后?
本文关键字:元素 第一个 最后 方法 任何 是否 简单 LINQ | 更新日期: 2023-09-27 18:14:39
或者我应该说,跳过第一个元素,并在最后回到它。
。假设我有
int[] arr = { 2, 4, 3, 9, 1, 0 };
,并希望像
一样遍历它{ 4, 3, 9, 1, 0, 2 }
我知道有一种方式是这样的
foreach(int i in arr.Skip(1).Append(new int[] { arr.First() }))
这就是为什么我要问是否有更好看和/或更有效的方法
只比你已经得到的稍微干净一点:
foreach(int i in arr.Skip(1).Concat(arr.Take(1)))
{
...
}
另一种方式。(不干净)
Enumerable.Range(1, arr.Length)
.Select(x => arr[x%arr.Length]);
我会把它保存到一个新的集合中,就像列表一样,因为当别人读我的代码时(如果有的话),我在做什么会更清楚。列表很好地针对这种行为进行了优化:
var list = arr.ToList();
list.Add(list.ElemntAt(0));
list.RemoveAt(0);
然后你可以迭代列表,这样做比使用Linq查询更冗长,Linq查询可以解决这个问题,但它可能不太容易阅读。