DataTable仅删除一行?

时间:2019-01-30 11:22:51

标签: c# datatable

有人可以告诉我我的错误吗? 我有两个表,合并成一个表。可以通过称为源的一列来区分它们。 (预期,找到) 我不会删除所有相等的行... 但是,如果同时删除了两行,则只会删除行i-1 ...

for (int i = 0; i < tbl.Rows.Count; i++)
            {
                try
                {

                    if (tbl.Rows[i].ItemArray.Contains(Constants.VALUE_SOURCE_FOUND) && tbl.Rows[i - 1].ItemArray.Contains(Constants.VALUE_SOURCE_EXPECTED))
                    {

                        var founded = (tbl.Rows[i].ItemArray).ToArray();
                        var expected = (tbl.Rows[i - 1].ItemArray).ToArray();


                        for (int u = 0; u < founded.Length; u++)
                        {
                            if (founded[u].ToString() == Constants.VALUE_SOURCE_FOUND)
                            {
                                founded = founded.Where(w => w != founded[u]).ToArray();        
                                expected = expected.Where(w => w != expected[u]).ToArray();     
                            }
                        }


                        if (founded.ToString() == expected.ToString())
                        {
                            tbl.Rows[i - 1].Delete();       
                            tbl.AcceptChanges();
                            tbl.Rows[i].Delete();           
                            tbl.AcceptChanges();
                        }

                    }
                }
                catch { }
            }
        }


        return tbl;

1 个答案:

答案 0 :(得分:0)

这行吗?

tbl.Rows[i].Delete();
tbl.AcceptChanges();

tbl.Rows[i-1].Delete();

tbl.AcceptChanges();

i = i - 2;

据我所知,仅删除要删除的行“标记”,您必须首先提交。在您进行第二次呼叫时,您将提交第一个呼叫,但是第二次删除将永远不会在数据表上执行。