我在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
以避免在迭代时修改列表。
答案 0 :(得分:0)
我发现了问题:DataTable用于DataGrid。每次UI选择更改时,此Datagrid都会执行命令。
此代码,
Data.Rows.Remove(row);
修改Datagrid中绑定的DataTable,并修改UI中的Selection。因此,Command被执行并产生变化。我没有意识到修改DataTable我也在更新UI选择。