使用 List.Move 将项目移动到列表底部

der*_*can 1 c# list

我有一个项目列表和一个“选定”列表(完整列表的子集)。我想实现一个将子列表项移动到完整列表底部的函数。

例如,如果我从列表 0,1,2,3,4,5,6,7,8,9 中选择了元素 2,4, & 6,我希望这个函数的最终结果是 0,1, 3,5,7,8,9,2,4,6

目前,我正在尝试使用这样的东西,但我不确定如何定义moveTo

public object MoveLoopToBottom()
{
    if (selectedLoops.Count < 1)
        return null;

    foreach (ProfilerLoop selected in selectedLoops)
    {
        int moveFrom = ClonedLoops.IndexOf(selected);
        int moveTo = ;

        ClonedLoops.Move(moveFrom, moveTo);
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

我咨询了它的List.Move工作原理:通用列表 - 在列表中移动一个项目,但它似乎不能“移动到列表末尾”。List.Move可以(最多)移动到“倒数第二个”位置(试图移动到列表的末尾会抛出“OutOfRange Exception”)。

而不是List.Move,我尝试执行List.Removethen List.Add(或List.Addthen List.RemoveAt),但是调用List.Remove给我的 foreach 循环迭代带来了问题(哪里List.Move没有)。

有什么建议?

pro*_*tor 5

如果我正确理解这一点,那么您可以简单地删除和阅读它们而无需使用循环。

List<int> list = new List<int>(new int[] { 0,1,2,3,4,5,6,7,8,9 });
var selected  = new List<int>(new int[] { 0,1,2 });

list = list.Except(selected).ToList();
list.AddRange(selected);
Run Code Online (Sandbox Code Playgroud)

这将从列表中删除所有选定的项目,然后将它们重新添加到底部。

网络小提琴