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

SkipTakeおよび を組み合わせて使用​​できます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 に答える