You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改DataSet中DataTable时提示DataTableCollection索引器只读如何解决

报错产生原因

.NET 类库中DataTableCollection(即DataSet.Tables属性对应的集合类型)的整数索引器仅实现了get读取方法,未实现set写入方法,属于只读属性,因此无法直接通过Risk.Tables[0] = xxx的下标赋值方式直接替换集合内的指定位置DataTable对象。

正确修改DataSet内DataTable的方法

根据你的使用场景可以选择对应方案:

  • 场景1:需要完全替换指定索引位置的DataTable对象
    先移除原有位置的表,再将新表插入到对应索引即可,示例代码如下:
// 移除索引0位置的原有DataTable
Risk.Tables.RemoveAt(0);
// 将新的DataTable插入到索引0位置
Risk.Tables.AddAt(matrixSource, 0);
  • 场景2:仅需要更新原有DataTable内的数据,不需要替换整个表对象
    直接操作原有表对象的属性、方法即可,无需替换整个表实例,示例代码如下:
// 清空原有表的全部数据
Risk.Tables[0].Rows.Clear();
// 从新表中批量导入数据到原有表
Risk.Tables[0].Load(matrixSource.CreateDataReader(), LoadOption.OverwriteChanges);
  • 场景3:按表名替换对应DataTable
    如果是按表名匹配替换,可以直接移除同名表后添加新表,示例代码如下:
string targetTableName = Risk.Tables[0].TableName;
if(Risk.Tables.Contains(targetTableName))
{
    Risk.Tables.Remove(targetTableName);
}
matrixSource.TableName = targetTableName;
Risk.Tables.Add(matrixSource);

内容的提问来源于stack exchange,提问作者sharpcodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:39:00