这是我第一次来到这里,我正在努力解决这个问题。 我有这段代码:
try
{
progressBar1.Maximum = lista.Items.Count;
lista.BeginUpdate();
for (int i = 0; lista.Items.Count > i; i++)
//for (int i = lista.Items.Count - 1; -1 < i; i--)
{
if (lista.Items[i].SubItems[1].Text.ToLower().Contains(Text) == false)
{
lista.Items[i].Remove();
}
progressBar1.Value = progressBar1.Value + 1;
}
lista.EndUpdate();
progressBar1.Value = 0;
}
catch (Exception errore)
{
txt_info.Text = "" + errore.Message;
progressBar1.Value = 0;
}
lista.items[i].remove
方法非常慢。
lista
是一个ListView
,我正在处理一个超过50,000行的日志文件。
有没有什么方法可以加速这个过程?
lista.Items.RemoveAt(i)
的速度有区别吗?也许(出人意料地),这个类必须自己返回去解决索引。” - DonBoitnottforeach
来做到这一点...我认为使用for
删除项目是合理的(最终某些代码必须这样做)- 但显然编写不正确(如上面示例中跳过刚刚删除的项旁边的项)是个坏主意。 - Alexei Levenkov