我有一个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”还是"datetime“。对于所有这些情况,DataColumn类的DataType属性始终返回System.DateTime类型。有没有办法只根据DataColumn和/或DataTable对象来获取这些信息,而不执行额外的SQL语句?
发布于 2019-10-16 13:41:13
您可以通过以下代码直接获取数据列的类型
foreach (DataColumn column in table.Columns) {
var v = column.GetType()
Return v.ToString()
}发布于 2013-10-02 13:01:06
日期和时间不是DataColumn的有效数据类型。DateTime和TimeSpan是唯一与日期/时间相关的数据类型。
看起来您不能仅仅通过类型来判断它是日期还是时间,您需要查看DateTime对象内部的数据或来自数据库的数据。
欲了解更多信息,请访问:http://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspx
https://stackoverflow.com/questions/19129684
复制相似问题