【问题标题】:Clone DataTable from One Dataset to DataTable of Other DataSet从一个数据集克隆数据表到另一个数据集的数据表
【发布时间】:2016-09-08 07:24:09
【问题描述】:

我正在尝试将 Datable 从一个数据集克隆到另一个数据集的数据表,但它不起作用。

Dataset ds = new Dataset();

 ds.Tables.Add("key");
 ds.Table["key"] = cust.Tables[0].Clone(); // This line is not working

上面的代码给出了下面的错误

Property or indexer 'System.Data.DataTableCollection.this[int]' cannot be assigned to — it's read only

cust 也是一个数据集。谁能帮我解决这个问题

【问题讨论】:

  • “不工作”是什么意思?
  • 数据集,但它不起作用。怎么样?
  • @AjayPandya 它给出错误属性或索引器'System.Data.DataTableCollection.this[int]' 不能分配给-它是只读的
  • @Serv 请看上面的评论
  • 我忘记提交答案了。只是保持标签打开。基本上你忘记了在你的ds.Tables[0] 周围添加(),你必须使用.Add()。详情见我的回答。

标签: c# datatable merge dataset


【解决方案1】:

你得到的错误类似于:

属性或索引器“System.Data.DataTableCollection.this[int]”不能 被分配给——它是只读的

你做对了一次,然后你又做错了。 错误告诉你,cust.Tables[0] 是只读的。您不能为其分配任何值,因此您必须使用Add() 方法:

DataSet cust = new DataSet(); // create source DataSet
cust.Tables.Add("sourceTable"); //add table to source

DataSet ds = new DataSet(); // create target DataSet
ds.Tables.Add((cust.Tables[0]).Clone()); //clone source table
(ds.Tables[0]).TableName = "keys"; // assign name

您需要将ds.Tables[indexer] 包装在括号() 中,以便编译器将其视为数据表。

您应该分配一个DataTable 变量以保持可读性:

var sourceTable = cust.Tables[0];
/* ... */
ds.Tables.Add(sourceTable.Clone());

【讨论】:

  • 你是一个救生员。非常感谢。
猜你喜欢
  • 2011-02-16
  • 2014-02-21
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2020-05-07
  • 2021-06-07
相关资源
最近更新 更多