如何获取数据集中行的索引?

时间:2015-06-09 04:08:47

标签: c#

我循环遍历带有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选择并删除该行?

1 个答案:

答案 0 :(得分:3)

大多数集合在迭代foreach时不允许更改内容(删除)。如果要删除行,只需使用for循环而不是foreach。您可以在MSDN文章中删除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

  

只要收集仍然存在,枚举器仍然有效   不变。如果对集合进行了更改,例如添加,   修改或删除元素,枚举器是不可恢复的   无效,下次调用MoveNext或Reset会抛出一个   InvalidOperationException异常。如果在之间修改了集合   MoveNext和Current,Current返回它设置的元素,   即使枚举器已经失效。

值得查看DataSet.AcceptChanges方法,该方法将提交DataSet中所做的更改。