我有一个DataGridView集合对象并检查特定条件。如果它为null,那么我将它从DataGridView集合中删除。这是我的代码 -
foreach(DataGridViewRow dr in myDataGridViewRowCollection.Rows)
{
string title = TypeConvert.ToString(dr.Cells[Name].Value);
if(title == null)
//Remove it from the list.
myDataGridViewRowCollection.Rows.Remove(dr);
}
现在,如果我在myDataGridViewRowCollection中有6行,那么其中5行的标题为null。现在,上面的代码只删除了5个中的3个而不是剩下的2个。
我有点理解这个问题,但我无法想到现在的解决方案。有什么想法吗?
答案 0 :(得分:3)
问题是你正在迭代它时改变myDataGridViewRowCollection.Rows
集合,这会混淆/破坏迭代器。您需要将其分为两个步骤。首先列出你需要删除的内容,然后你可以删除它们。
var toRemove = myDataGridViewRowCollection.Rows.Where(x => x.Cells[Name].Value == null);
foreach(var row in toRemove){
myDataGridViewRowCollection.Rows.Remove(row);
}