从DataTable中删除DataRow也会将其从外部列表中删除

时间:2018-02-13 08:25:12

标签: c# .net datatable

我在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中删除行也会将其从列表中删除。实际上,我需要在Selected_Rows.ToArray()循环中使用foreach以避免在迭代时修改列表。

1 个答案:

答案 0 :(得分:0)

我发现了问题:DataTable用于DataGrid。每次UI选择更改时,此Datagrid都会执行命令。

此代码,

Data.Rows.Remove(row); 

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