DataTable dt = new DataTable();
DataRow[] dr;
dt.Columns.Add();
dt.Columns.Add();
dt.Rows.Add(1, 1);
dt.Rows.Add(2, 2);
dt.Rows.Add(3, 3);
dr = dt.Select();
dr[1].Delete();
foreach (DataRow x in dt.Rows)
MessageBox.Show(x[0] + " " + x[1]);
MessageBox向我显示“1 1”和“3 3”。为什么会这样?我没有操纵DataTable,只是DataRow []来保存DataTable的值。那么为什么DataTable中的值也发生了变化?有人可以解释一下吗?
答案 0 :(得分:2)
您正在获取dr中所选行的引用,它们不是副本。如果删除一个,那么它就会从dt.rows and dr。
消失答案 1 :(得分:0)
查看http://msdn.microsoft.com/en-us/library/system.data.datatable.acceptchanges.aspx
您需要在删除后调用AcceptChanges:
dt.AcceptChanges();
答案 2 :(得分:0)
dr
实际上引用了DataTable dt
中的行。这就是它被删除的原因。