将DataTable列从Boolean转换为Int

时间:2015-12-15 08:25:20

标签: c# mysql datatable data-conversion

我编写了一个程序,使用OleDB查询来填充DataTable,然后使用BulkLoader将其加载到MySQL数据库中。我遇到的问题是将OleDB布尔类型列转换为MySQL中的等效列。我知道MySQL中没有BOOL,所以我尝试使用TINYINT但没有运气。我认为问题是我需要BulkLoader TRUEFALSE才需要10才能工作。

这是中间CSV文件中的列;

enter image description here

我认为这样做的一个简单方法就是简单地编写一个foreach循环,然后生成每个TRUE = 1FALSE = 2,就像这样;

foreach (DataRow column in dTable.Rows)
{
  if (Convert.ToBoolean(column[16]) == true)
  {
        column[16] = 1;
  }
  else
  {
        column[16] = 0;
  }
}

然而,这会以与上面显示的图像完全相同的输出结束,它仍会将所有内容解析为TRUEFALSE,而不是10。我现在想,我可能必须将DataTable列的类型从布尔值转换为整数但我不确定如何做到这一点,或者它是否是最简单的方法。

1 个答案:

答案 0 :(得分:1)

一旦有数据,就无法更改列类型。但是,可以做这样的事情;

DataTable dtCloned = dt.Clone();
dtCloned.Columns["YouColumnName"].DataType = typeof(int);
foreach (DataRow row in dTable.Rows) 
    dtCloned.ImportRow(row);