我有一个DataTable
,其中包含不同类型的列。我想要的是DataTable
具有相同的列名但所有值都是字符串。也就是说,如果这是第一个:
Name Age
-----------
John 31
Alice 27
Marge 45
其中,Name是String
列,而Age是Int32
列,我想要的是:
Name Age
-----------
John 31
Alice 27
Marge 45
其中Name和Age是两个字符串列。输出表必须包含与输入表相同的值,但每个值都必须转换为字符串。任何人都可以提供有关如何做到这一点的任何见解吗?我想过可能会做像
这样的事情foreach (DataColumn col in inputTable.Columns)
{
outputTable.Columns.Add(col.ColumnName, typeof(string));
foreach (DataRow row in inputTable.Rows)
{
...??
}
}
或许有更好或更有效的方法?任何指导都将不胜感激。
答案 0 :(得分:10)
如果已有记录,则无法在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
答案 1 :(得分:0)
您可以使用名为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());
}
}
答案 2 :(得分:0)
在此代码中,您可以将整个数据集转换为一个字符串。
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