如何在c#中移动列表中的项目子集?

yaj*_*jiv -2 c# list

我有以下列表:

List<string> l=new List<string()>{"a","b","c","d","1","2","3","4","a1","b2","c3","d4"};
Run Code Online (Sandbox Code Playgroud)

我有oldIndex,size而且newIndex.

我们先来说说上面的列表中oldIndex = 4,size = 4,newIndex = 0.

我想要的输出列表是:

{"1","2","3","4","a","b","c","d","a1","b2","c3","d4"};
Run Code Online (Sandbox Code Playgroud)

我发现的解决方案是(对所有情况都不起作用):

for(int i=0;i<size;i++)
{
    if(oldIndex<newIndex)
    {
        var x=l[oldIndex];
        l.RemoveAt(oldIndex);
        l.Insert(newIndex+size-1,x);
    }
    else
    {
        var x=l[oldIndex+i];
        l.RemoveAt(oldIndex+i);
        l.Insert(newIndex+i,x);
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,可能使用LINQ或更好的东西,或者上面是唯一的方法吗?

我从这个链接找到了上面的答案.这个问题的不同之处在于我想移动一个块,而不仅仅是单个元素.

小智 5

您可以使用以下内容:

List<string> removedRange = l.GetRange(oldIndex, size);
l.RemoveRange(oldIndex, size);
l.InsertRange(newIndex, removedRange);
Run Code Online (Sandbox Code Playgroud)