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)
在枚举时,您无法修改枚举器中的引用; 你必须跟踪要删除的那些然后删除它们.
这是一个工作的例子:
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)