2

我有一个 DataTable 对象并且可以访问它的 Columns 集合。对于此集合的每个项目,我需要确定列的类型并将其作为以下字符串之一返回:'string''number''boolean''date''datetime''timeofday'。

所以我做了如下的事情:

foreach (DataColumn column in table.Columns) {
  string colType = DermineColumnType(column);
}

. . . . 

string DeterminColumnType(DataColumn column) {
  Type sysType = column.DataType
  if (sysType == typeof(Boolen)
      return "boolean";
  else if (sysType == typeof(Decimal) || sysType == typeof(Double) || sysType == typeof(Int32) ...)
      return "number";
  . . . . . . 
  else
      return "string";

}

问题在于 'date'、'datetime' 和 'timeofday' 值 - 我在 DataColumn 类中找不到任何信息,这使我可以确定该列是否在数据库表中定义为“date”、“time”或“约会时间”。对于所有这些情况,DataColumn 类的 DataType 属性始终返回 System.DateTime 类型。有什么方法可以仅基于 DataColumn 和/或 DataTable 对象获取此信息,而无需执行额外的 SQL 语句?

4

2 回答 2

1

可以通过以下代码直接获取数据列的类型

 foreach (DataColumn column in table.Columns) {
  var v = column.GetType()
Return v.ToString()
}
于 2019-10-16T05:41:12.847 回答
0

日期和时间不是 DataColumn 的有效数据类型。DateTime 和 TimeSpan 是唯一与日期/时间相关的数据类型。

您似乎无法仅从类型判断它是日期还是时间,您需要查看 DateTime 对象内或数据库中的数据。

更多信息:http: //msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspx

于 2013-10-02T05:01:05.987 回答