【问题标题】:How to assign one datarow values to another datarow如何将一个数据行值分配给另一个数据行
【发布时间】:2018-05-29 16:56:39
【问题描述】:

我想将一个 DataTable 的第一行复制到另一个 DataTable 的第一行。我做了如下所示,但它会抛出类似

的错误

无法将属性或索引器“System.Data.DataRowCollection.this[int]”分配给——它是只读的

DataTable dt = GetTable();
DataTable dt1 = GetTable1();
dt.Rows[0] = dt1.Rows[0];

【问题讨论】:

  • 你的GetTable()返回什么?
  • @ThadeuFernandes 它显然返回了一个DataTable 实例...
  • 是的,这很明显,但是除了新实例之外,还可以将更多值分配给DataTableDataTable 的新实例的行数将等于 0,从而导致 out of range 运行时异常,或者您可能有一个方法,您已经创建了具有空值的行以便稍后填充它们,两者都会给您相同的异常(dt.Row[0] 是只读的)并且区别对待。无论如何,您的行集合就像IEnumerable 一样工作,该集合是只读的,您可以使用dt.Rows.Add (row)dt.Rows.InsertAt (row, index) 来填充您的集合。

标签: c# .net


【解决方案1】:

您必须逐个字段地复制它。

【讨论】:

    【解决方案2】:

    数据表中的数据行是不可变的,这意味着您可以更改其字段的值,但不能更改对象本身,也就是说您应该将值从源行复制到目标行。

    假设您的数据表具有相同的列:

    DataTable dt = GetTable();
    DataTable dt1 = GetTable1();
    foreach(DataColumn column in dt.Columns)
    {
        dt.Rows[0][column] = dt1.Rows[0][column];
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2021-12-18
      • 2019-10-25
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多