我正在使用 foreach
循环遍历数据集,试图删除其 ID 与数组的指定值不匹配的行,我想获取 ds
数据集中当前行的索引以删除排。例如:
for(int i =1;i<=TotalWinners;i++)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr["ID"] != Winners[i, 0])
{
//int x = ds.Tables[0].Rows.IndexOf();
int index = ds.Tables[0].Rows.IndexOf[current row index]
}
}
}
如何获取循环中该行的索引?如果我无法获得该行的索引,我如何通过 ID 选择和删除该行?
最佳答案
大多数集合不允许在迭代 foreach 时更改内容(删除)。如果您想删除该行,您可以简单地使用 for 循环而不是 foreach。您可以在 MSDN 文章 Delete Rows in a DataTable How to: Delete Rows in a DataTable 中了解更多信息
for (int i=0 i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["ID"] != Winners[i, 0])
{
ds.Tables[0].Rows[i].Delete();
}
}
ds.AcceptChanges();
IEnumerator Interface wont allow changes like adding, modifying, or deleting elements
值得查看 DataSet.AcceptChanges 方法,该方法将提交在
DataSet
中所做的更改。关于c# - 如何获取数据集中一行的索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30722844/