C# 向DataTable动态添加行列循环赋值输出不符合预期如何解决
代码问题说明
- 逻辑错误:你当前采用「遍历列→每列单独新增批量行」的逻辑,会导致新表行数为原表行数×列数,每行仅当前处理列有值,其余列为空,和预期结构完全不符。
- 语法错误:
- 类名拼写错误:
DataTables多了末尾的s,正确类名为DataTable - 变量名不匹配:你实例化的新表变量为
dynamictable,但添加行时调用的是enryptedTable.Rows.Add(),存在拼写错误且变量未定义。
- 类名拼写错误:
修正代码
你需要先完成新表列结构创建,再逐行处理原表数据,一次性完成整行所有列的赋值:
DataTable dynamictable = new DataTable(); // 先构建新表列结构 foreach (DataColumn cl in dataTable.Columns) { dynamictable.Columns.Add(cl.ColumnName); } // 逐行迁移并处理数据 foreach (DataRow originalRow in dataTable.Rows) { DataRow newRow = dynamictable.NewRow(); foreach (DataColumn cl in dataTable.Columns) { // 若要对数据加密,直接将下方赋值内容替换为加密后的结果即可 newRow[cl.ColumnName] = originalRow[cl].ToString(); } dynamictable.Rows.Add(newRow); }
效果对比
- 错误运行实际输出:

- 修正后预期输出:

内容的提问来源于stack exchange,提问作者Ramesh
相关产品推荐
相关产品推荐

