DataTable不获取更新

本文关键字:更新 获取 DataTable | 更新日期: 2023-09-27 18:00:55

我有一个DataTable,其中一列填充了文本文件中的单词列表,我创建了一个读取字符串的方法,如果字符串已创建,则必须删除该行,但问题是DataTable没有得到更新。

foreach(string line in file)
{
   tagst.Rows.Add(line)
}
string s;
for (int k = 0; k < tagst.Rows.Count; k++)
{
   s = tagst.Rows[k]["Tags"].ToString();
   if(s.Equals("Jad"))
   {
      tagst.Rows[k].Delete();
   }
}

DataTable不获取更新

循环后,调用tagst.AcceptChanges();

根据文件:

When AcceptChanges is called, any DataRow object still in edit mode successfully ends its edits. The DataRowState also changes: all Added and Modified rows become Unchanged, and Deleted rows are removed.

正如@LarsTech所说,你会想重新制作你的循环,比如:

for (int i = tagst.Rows.Count - 1; i >= 0; i--)
{
    // ....
}

编码的一个问题是,当删除行时,需要从最后一行向后开始,原因很简单。一旦删除第3,10,20行(共100行(,将保留多少行?为什么你需要从底层开始?因为标记将在删除完成后立即自动重新索引和排序。

但是您的标签行数已经设置,并且永远不会刷新!

基本上,一旦你的计数器(K(达到已经删除行的数字,你最多会看到错误,更糟糕的是,如果你没有设置错误处理例程,你的应用程序会崩溃。由于您并没有发布创建tgst的实际代码,我将展示如何在数组中完成它。变量声明已提交。。。试试这个:

 for (int k=tagstArray.Count; k>0; k--)
   {
       s = tagstArray[k].ToString();
       if(s.Contains("Jad"))
        {
           tagstArray[k].Remove(k);
        }
    }