获取 DataTable 列的数据类型

51
DataTable dt = new DataTable();  
dt.Columns.Add(new DataColumn(gridColumn1, typeof(bool)));

我本来期望下面这行代码的结果会包含有关DataColumns类型(bool)的信息:

?dt.Columns[0].GetType()
5个回答

97
你想要使用的是这个属性:
dt.Columns[0].DataType

DataType 属性将设置为以下之一:

Boolean
Byte
Char
DateTime
Decimal
Double
Int16
Int32
Int64
SByte
Single
String
TimeSpan
UInt16
UInt32
UInt64

DataColumn.DataType 属性 MSDN 参考


1
以及任何其他类型名称,例如System.Collections.Specialized.StringDictionary。 - philw

16

您可以在if语句中始终使用typeof。这比像Natarajan的答案一样使用字符串值要好。

using System.Data;

if (dt.Columns[0].DataType == typeof(DateTime))
{
    //...
}

或者使用列名:

if (dt.Columns["yourColumnName"].DataType == typeof(DateTime))
{
    //...
}

10
dt.Columns[0].DataType.Name.ToString()

7
请提供更多关于您的回答的细节,例如解释代码为什么有效等。 - Mehraban

0

您可以通过DataTable列的DataType属性来获取列类型,如下所示:

var type = dt.Columns[0].DataType

dt: DataTable 对象。

0: DataTable 列索引。


-2
if (dr[dc.ColumnName].GetType().ToString() == "System.DateTime")

获取类型,然后将其转换为字符串进行比较似乎有点多余。 - General Grievance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接