using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
var list = Enumerable.Range(0, 10).ToList();
Console.WriteLine("- move 5 to 1 -");
list.MoveItem(5, 1);
list.ForEach(n => Console.WriteLine(n));
Console.WriteLine("- move 2 to 9 -");
list.MoveItem(2, 9);
list.ForEach(n => Console.WriteLine(n));
}
}
static class Extensions
{
public static void MoveItem<T>(this List<T> list, int from, int to)
{
var target = list[from];
list.RemoveAt(from);
list.Insert(to, target);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgdmFyIGxpc3QgPSBFbnVtZXJhYmxlLlJhbmdlKDAsIDEwKS5Ub0xpc3QoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiLSBtb3ZlIDUgdG8gMSAtIik7CiAgICAgICAgbGlzdC5Nb3ZlSXRlbSg1LCAxKTsKICAgICAgICBsaXN0LkZvckVhY2gobiA9PiBDb25zb2xlLldyaXRlTGluZShuKSk7CgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCItIG1vdmUgMiB0byA5IC0iKTsKICAgICAgICBsaXN0Lk1vdmVJdGVtKDIsIDkpOwogICAgICAgIGxpc3QuRm9yRWFjaChuID0+IENvbnNvbGUuV3JpdGVMaW5lKG4pKTsKCX0KfQoKc3RhdGljIGNsYXNzIEV4dGVuc2lvbnMKewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1vdmVJdGVtPFQ+KHRoaXMgTGlzdDxUPiBsaXN0LCBpbnQgZnJvbSwgaW50IHRvKQogICAgewogICAgICAgIHZhciB0YXJnZXQgPSBsaXN0W2Zyb21dOwogICAgICAgIGxpc3QuUmVtb3ZlQXQoZnJvbSk7CiAgICAgICAgbGlzdC5JbnNlcnQodG8sIHRhcmdldCk7CiAgICB9Cn0K