Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从常规列表中删除项_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 从常规列表中删除项

C# 从常规列表中删除项,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在尝试使用RemoveAt从常规列表中删除项目。奇怪的是,在使用调试器时,我可以看到我的项已被删除,但当将其传递给视图时,删除的项显示出来,但最后一项已被删除 代码如下所示 public ActionResult(MyModel model, int[] removeitems) { //model.ListItems has 10 items //Incoming removeitems has 0 as the first item to remove as a test forea

我正在尝试使用RemoveAt从常规列表中删除项目。奇怪的是,在使用调试器时,我可以看到我的项已被删除,但当将其传递给视图时,删除的项显示出来,但最后一项已被删除

代码如下所示

public ActionResult(MyModel model, int[] removeitems)
{
 //model.ListItems has 10 items
 //Incoming removeitems has 0 as the first item to remove as a test
foreach(int item in removeitems)
{
 model.ListItems.RemoveAt(item);
}
 //by this time debugger shows that item 0 has in fact been removed and no longer exists in the list
 return View(model);
 //after the view is rendered it shows item 0 is still there but 10 has been removed
}
我知道我可以通过将项目复制到另一个列表等其他方式来实现,但是所有测试都显示上面的代码确实删除了第一个项目,但是视图并没有反映这一点


有什么想法吗?

这听起来可能很傻,但是否有可能从其他地方覆盖了您的结果?

每当您删除项目时,索引都会更改。例如,删除第0个项目后,第一个项目现在将成为第0个。要防止出现这种情况,请从末尾向开头删除项目:

foreach(int item in removeitems.OrderByDescending(n => n))
{
    model.ListItems.RemoveAt(item);
}

发布您的视图代码…我认为,视图代码中有一些邪恶的部分…您确定不希望
.Remove()
找到元素并将其删除吗?很好地找到了第一个匹配元素并删除它。@ NoMAD101。谢谢。我知道删除了。它不是我WANTIN考虑过的,并且可以肯定不是这样的。因为我的观点很简单,只是列出了列表中的项目。谢谢。出于兴趣,有人知道为什么调试器和测试可以工作而视图不能工作吗?@AliK这取决于测试。如果
removietems
仅包含1项,或者已按降序排序,则不会失败。