从列表中删除项目c#

Mik*_*e91 0 c# list

我在从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 - 因此我得到一个超出范围的异常!

有人可以帮我解决这个问题吗?对这个令人困惑的问题抱歉,很难解释!谢谢

Ser*_*kiy 8

你可以用Linq做到.不确定是否需要转换为ListItem(可以删除它)

current.RemoveAll(x => sp_list.Items.Cast<ListItem>()
                              .Any(li => li.Text == x.uname));
Run Code Online (Sandbox Code Playgroud)

  • "RemoveAll"似乎与制作"新列表"具有相似的性能,并且非常简单+1.http://stackoverflow.com/questions/6926554/how-to-quickly-remove-items-from-a-list (2认同)