从给定位置开始重新排序列表

Ale*_*lex 0 c# list

列表:

List<int> list1 = new List<int>(){ 0, 1, 2, 3, 4, 5, 6 };
Run Code Online (Sandbox Code Playgroud)

假设我们想要重新排序。开头应为数字“2”

// 2,3,4,5,6,0,1
Run Code Online (Sandbox Code Playgroud)

或 5 号

// 5,6,0,1,2,3,4
Run Code Online (Sandbox Code Playgroud)

你如何用 C# 做到这一点?

原因:假设您在 List 中有一个给定数字的索引(数字 3,索引 3)。您想要获得右侧第二个数字 - 它将是 5。

不幸的是,如果起始数字位于列表的末尾(数字 5 和 6),则会抛出超出范围异常,因为没有 7 和 8!

这个想法是重新排序列表!

  • 我们输入 Nr。5 - 我们得到 0 (5,6,0)。
  • 我们输入 Nr。6 - 我们得到 1 (6,0,1),等等。

或者也许还有其他(更好的)方法来解决这个问题?

Kei*_*thS 5

一点 Linq 就可以很容易地做到这一点:

List<int> list1 = new List<int>(new[] { 0, 1, 2, 3, 4, 5, 6 });

var numToStart = 4;

//reorderedList will be {4,5,6,0,1,2,3}
var reorderedList = list1.Skip(numToStart).Concat(list1.Take(numToStart));
Run Code Online (Sandbox Code Playgroud)