我正在使用 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/

10-12 12:44