List<Widget> list = List<Widget>();
Widget widgetA = new Widget();
Widget widgetB = new Widget();
Widget widgetC = new Widget();
Widget widgetD = new Widget();
Widget widgetE = new Widget();
Widget widgetF = new Widget();
list.AddRange(new[] { widgetA, widgetB, widgetC, widgetD, widgetE, widgetF });
我需要做些什么才能从中间的某个位置开始排序?
例如,
list.AddRange(new[] { widgetD, widgetE, widgetF, widgetA, widgetB, widgetC });
或者换句话说,在中间某处开始索引,然后按顺序包装剩余的对象。
答案 0 :(得分:2)
您可以使用Skip
,Take
和Union
的组合。
List<Widget> widgets = ...
// now to split and wrap
int startIndex = 3;
var newList = widgets.Skip(startIndex)
.Union(widgets.Take(startIndex)
.ToList();
答案 1 :(得分:1)
首先对它们进行排序,然后将前几个元素放在最后。
var mid = 2; // starting point
var arr = new[] { widgetA, widgetB, widgetC, widgetD, widgetE, widgetF };
arr.Sort(); //you can use your own comparator for sorting
list.AddRange(arr.Skip(mid).Concat(arr.Take(mid)));