c# - 更新新 DataRow 中的值也会影响它所在的​​ DataTable 吗?

标签 c# datatable datarow

这是我的第一个问题,
我四处寻找但找不到答案,
我将不胜感激任何帮助。

假设我有一个名为 dtTest 的数据表,如下所示

+----+------+
| id | name |
+----+------+
|  1 | AA   |
|  2 | BB   |
+----+------+

当我从 dtTest 创建一个新的 DataRow 并更新其值时

DataRow drTest = dtTest.Rows[0];
drTest["name"] = "CC";

我认为我唯一改变的是新对象drTest中的值,
并且它独立于dtTest
dtTest 实际上也受到了影响。

+----+------+
| id | name |
+----+------+
|  1 | CC   |
|  2 | BB   |
+----+------+

为什么此操作会影响原始数据表?

最佳答案

这不会创建新行,而只是对表中第一行的引用:

DataRow drTest = dtTest.Rows[0];  // Rows is a DataRowCollection which contains all table-rows

如果您想要一个新行,您有以下选项:

DataRow drTest1 = dtTest.NewRow();             // not yet added, you need: dtTest.Rows.Add(drTest1);
DataRow drTest2 = dtTest.Rows.Add();           // already added without values
DataRow drTest3 = dtTest.Rows.Add(1, "test");  // already added with values

关于c# - 更新新 DataRow 中的值也会影响它所在的​​ DataTable 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42666520/

相关文章:

php - Laravel 数据表中的限制

c# - 数据集中特定列的所有行

c# - 如何在 Windows 8 的 Web View 中捕获导航事件?

javascript - 在 Symfony2 中使用 jQuery 数据表 |学说| Twig 项目 - 混合一些功能以使选择的标签过滤器在数据表中显示结果

C#:合并数据表中的数据行

c# - 数据表并发锁定

c# - 使用一个函数从 DataRow 或 DataReader 中提取

C# iPhone 推送服务器?

c# - 是否有任何内置的集合类型或 IEqualityComparer<T> 用于基于其中的项目的相等性的集合?

c# - 如何以编程方式将用户设置为 SharePoint 中的网站集管理员