C#从列表框中删除项目

11 c#

我有一个从SQLDATA拉出填充的列表框,它下拉了一些我不想要的列,如OBJECT_dfj,OBJECT_daskd.关键是所有这些都是OBJECT_,有没有办法从列表框中删除它们?我无法更改我的SQL语句.

我试过这个:

 foreach (string item in listBox1.Items)
 {
     string removelistitem = "OBJECT";
     if(item.Contains(removelistitem))
     {
         listBox1.Items.Remove(item);
     }
 }
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:

已修改此枚举器绑定的列表.只有在列表不更改时才能使用枚举器.

egr*_*nin 19

您不能使用枚举器,您必须使用索引循环,从最后一项开始:

for (int n = listBox1.Items.Count - 1; n >= 0; --n)
{
    string removelistitem = "OBJECT";
    if (listBox1.Items[n].ToString().Contains(removelistitem))
    {
        listBox1.Items.RemoveAt(n);
    }
}
Run Code Online (Sandbox Code Playgroud)


gin*_*boy 5

在枚举时,您无法修改枚举器中的引用; 你必须跟踪要删除的那些然后删除它们.

这是一个工作的例子:

List<string> listbox = new List<string>();
List<object> toRemove = new List<object>();

foreach (string item in listbox)
{
    string removelistitem = "OBJECT";
    if (item.Contains(removelistitem))
    {
        toRemove.Add(item);
    }
}

foreach (string item in toRemove)
{
    listbox.Remove(item);
}
Run Code Online (Sandbox Code Playgroud)

但是如果你使用c#3.5,你可以这样说.

listbox.Items = listbox.Items.Select(n => !n.Contains("OBJECT"));
Run Code Online (Sandbox Code Playgroud)


小智 0

抱歉,我必须调整琴弦

sqldatapull = dr[0].ToString();
                if (sqldatapull.StartsWith("OBJECT"))
                {
                    sqldatapull = "";
                }
                listBox1.Items.Add(sqldatapull);
                for (int i = listBox1.Items.Count - 1; i >= 0; i--)
                {
                    if (String.IsNullOrEmpty(listBox1.Items[i] as String))
                        listBox1.Items.RemoveAt(i);
                }
            }
Run Code Online (Sandbox Code Playgroud)