我在从c#中的列表中删除项目时遇到问题.我目前的代码如下:
for (int i = current.Count - 1; i >= 0; i--)
{
foreach (ListItem li in sp_list.Items)
{
if (li.Text == current[i].uname)
{
current.RemoveAt(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码的目的是将列表框中的现有项目与新添加的项目进行比较,以便我知道刚刚添加了哪些项目.因此,目前我从数据库中获取当前列表框项目(它们存储在此处,它是数据绑定列表框),将这些项目输入到列表中,并为每个列表项目,将它们与列表框中的项目进行比较,如果匹配,请从列表中删除该项目.
因此,最后,如果我添加两个新条目,列表应该只存储两个新添加的值.
代码不起作用,因为第一项被删除正常,但是,i的值大于current.count - 因此我得到一个超出范围的异常!
有人可以帮我解决这个问题吗?对这个令人困惑的问题抱歉,很难解释!谢谢
你可以用Linq做到.不确定是否需要转换为ListItem(可以删除它)
current.RemoveAll(x => sp_list.Items.Cast<ListItem>()
.Any(li => li.Text == x.uname));
Run Code Online (Sandbox Code Playgroud)