我有一个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”,“时间“或”日期时间“。 DataColumn类的DataType属性始终为所有这些情况返回System.DateTime类型。 有没有办法在不执行其他SQL语句的情况下仅根据DataColumn和/或DataTable对象获取此信息?
答案 0 :(得分:1)
您可以通过以下代码直接获取数据列的类型
foreach (DataColumn column in table.Columns) {
var v = column.GetType()
Return v.ToString()
}
答案 1 :(得分:0)
日期和时间不是DataColumn的有效数据类型。 DateTime和TimeSpan是唯一的日期/时间相关数据类型。
您似乎无法从类型中分辨出它是日期还是时间,您需要查看DateTime对象内部或数据库中的数据。
了解更多信息: http://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspx