【问题标题】:Remove DataRow from DataTable also removes it from an external List从 DataTable 中删除 DataRow 也会将其从外部列表中删除
【发布时间】:2018-02-13 08:25:12
【问题描述】:

我在 C# 中有这段代码:

//newrow is contained in Datatable Data
//Selected _Rows is a List<DataRow>
Selected_Rows.Add(newrow);
.
. //Do stuff
.
foreach (DataRow row in Selected_Rows.ToArray())
{
    ...
    //This action also removes row from Selected_Rows. ???
    Data.Rows.Remove(row); 
    ...
}

我不明白为什么从DataTable 中删除该行也会将其从列表中删除。实际上,我需要在foreach 循环中使用Selected_Rows.ToArray() 以避免在迭代时修改列表。

【问题讨论】:

  • 在此处显示您选择的行结构。
  • 构造是private List&lt;DataRow&gt; Selected_Rows = new List&lt;DataRow&gt;(); 它从未分配给Data.Rows。它们是不同的对象
  • 如果您能提供minimal reproducible example,那就太好了。

标签: c# .net datatable


【解决方案1】:

我发现了问题:DataTable 是在 DataGrid 中使用的。每次 UI 选择发生变化时,这个 Datagrid 都会执行一个命令。

这段代码,

Data.Rows.Remove(row); 

修改Datagrid中绑定的DataTable,同时修改UI中的Selection。因此,命令被执行并产生变化。我没有意识到修改 DataTable 我也在更新 UI 选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多