代码之家  ›  专栏  ›  技术社区  ›  HoneyBadger

合并数据表不会改变行状态

  •  0
  • HoneyBadger  · 技术社区  · 7 年前

    我有两个具有相同模式的数据表,我想得到它们之间的差异。我正在申请 Merge 为了这个。代码更容易阅读,下面是一个小示例:

    //Create first datatable
    var o = new DataTable{Columns = { "id", "value"}};
    //Add a datarow
    o.Rows.Add(1, "test");
    //Set PK
    o.PrimaryKey = new[]{o.Columns[0]};
    //Set RowState to Unchanged
    o.AcceptChanges();
    
    //Create copy of first datatable
    var m = o.Copy();
    //Change a value 
    m.Rows[0]["value"] = "test2";
    //Set RowState to Unchanged
    m.AcceptChanges();
    
    //Merge
    o.Merge(m);
    

    直到合并,一切都按预期进行;我有两个数据表,每一行都有相同的 id ,但情况不同 value (“测试”和“测试2”)。 在合并之后,我需要datatable o 要有一个id=1且value=“test2”的行。这是真的。我还以为一排会有 RowState="Modified" . 这不是真的,是真的 RowState="Unchanged" . 为什么会这样?

    我已经读了一些关于你应该打电话问的大致相似的问题的答案 EndEdit() 每排都有。当然这不是答案,这是我们的全部目的 Merge()

    1 回复  |  直到 7 年前
        1
  •  1
  •   andre    7 年前

    检查可用于保留状态的方法重载:

    布尔值

    true ,以保留当前文件中的更改 DataTable ; 否则 false .

    Link

    检查此处的测试: https://dotnetfiddle.net/KI7xPe