繁体   English   中英

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

[英]Copy C# DataTable and convert all values to string

我有一个包含不同类型列的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所有数据

您可以使用名为toString()的内置方法。

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

foreach (DataRow row in inputTable.Rows)
{
outputTable.Columns.Add(row.toString());
}
}

在此代码中,您可以将整个数据集转换为一个字符串。

string ConvertDatasetToString(DataSet Ds)
{
    string OUT = "";
    for (int t = 0; t < Ds.Tables.Count; t++)
    {
        for (int r = 0; r < Ds.Tables[t].Rows.Count; r++)
        {
            for (int c = 0; c < Ds.Tables[t].Columns.Count; c++)
            {
                string s = Ds.Tables[t].Rows[r][c].ToString();
                OUT += s;
            }
        }
    }
    return OUT;
}

如果你想要一个数据表转换成一个字符串,可以省略第一个for

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM