c# - 复制 C# DataTable 并将所有值转换为字符串

标签 c# string type-conversion system.data.datatable

我有一个包含不同类型列的 DataTable。我想要的是一个具有相同列名但所有值都是字符串的 DataTable。也就是说,如果这是第一个:

Name   Age
-----------
John   31
Alice  27
Marge  45

其中 Name 是一个 String 列,Age 是一个 Int32 列,我想要的是:

Name   Age
-----------
John   31
Alice  27
Marge  45

其中姓名和年龄都是字符串列。输出表必须包含与输入表相同的值,但每个值都必须转换为字符串。任何人都可以提供有关如何执行此操作的任何见解吗?我想也许可以做一些类似的事情

foreach (DataColumn col in inputTable.Columns)
{
    outputTable.Columns.Add(col.ColumnName, typeof(string));

    foreach (DataRow row in inputTable.Rows)
    {
        ...??
    }
}

或者也许有更好或更有效的方法?任何指导将不胜感激。

最佳答案

如果 DataTable 中已有记录,则不能修改列类型。你可以Clone DataTable,然后在克隆表的每一列中修改列类型。稍后您可以导入行。

DataTable dtClone = dt.Clone(); //just copy structure, no data
for (int i = 0; i < dtClone.Columns.Count; i++)
{
    if (dtClone.Columns[i].DataType != typeof(string))
        dtClone.Columns[i].DataType = typeof(string);
}

foreach (DataRow dr in dt.Rows)
{
    dtClone.ImportRow(dr);
}

dtClone 将拥有字符串的每一列和原始表 dt

中的所有数据

关于c# - 复制 C# DataTable 并将所有值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970418/

相关文章:

c# - Task.Yield 是否真的在当前上下文中运行延续?

C#:如何在 Windows 应用程序中从 Web 浏览器读取数据

c++ - 使用 “any_of”时如何检查字符串是否没有特定符号?

javascript - 从字符串到 int 的数组转换会使浏览器崩溃

c# - 获取任务的方法名

c# - 无法重新膨胀 fragment 对话框 Xamarin 和 C#

javascript - 查找字符串中最大的数字[jquery]

java - 正则表达式查找文本中标签之间重复标签的单词

pandas - 串联错误(传递的项目数错误x,放置位置表示1)

c++ - nullptr 可以用作变量参数(varargs)吗?