我有一个项目列表和一个“选定”列表(完整列表的子集)。我想实现一个将子列表项移动到完整列表底部的函数。
例如,如果我从列表 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没有)。
有什么建议?
如果我正确理解这一点,那么您可以简单地删除和阅读它们而无需使用循环。
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)
这将从列表中删除所有选定的项目,然后将它们重新添加到底部。