0
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 });

或者,换句话说,在中间某处开始索引,然后按顺序包装剩余的对象。

4

2 回答 2

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();
于 2012-10-11T18:56:27.293 回答
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)));
于 2012-10-11T19:08:04.320 回答