如何确定DataColumn的类型是数字,字符串还是日期时间?

Jef*_*ang 3 .net types

我需要根据DataTable中DataColumns的类型格式化输出.

具体来说,我需要将内置的基本类型(int,string,decimal,DateTime等)映射到:

  • SomeEnum.Numeric
  • SomeEnum.Bool
  • SomeEnum.DateTime
  • SomeEnum.String
  • SomeEnum.Unknown
  • SomeEnum.Null

我怎么能这样做?

Luk*_*keH 10

如果内置TypeCode枚举满足您的需求,那么您可以只读取DataType您的属性DataColumn然后调用GetTypeCode,

TypeCode yourTypeCode = Type.GetTypeCode(yourDataColumn.DataType);

switch (yourTypeCode)
{
    case TypeCode.Byte:
    case TypeCode.SByte:
    case TypeCode.Int16
    case TypeCode.UInt16:
    case TypeCode.Int32:
    case TypeCode.UInt32:
    case TypeCode.Int64:
    case TypeCode.UInt64:
    case TypeCode.Single:
    case TypeCode.Double:
    case TypeCode.Decimal:
        Console.WriteLine("Numeric");
        break;
    case TypeCode.Boolean:
        Console.WriteLine("Bool");
        break;
    case TypeCode.DateTime:
        Console.WriteLine("DateTime");
        break;
    case TypeCode.String:
        Console.WriteLine("String");
        break;
    case TypeCode.Empty:
        Console.WriteLine("Null");
        break;
    default:    // TypeCode.DBNull, TypeCode.Char and TypeCode.Object
        Console.WriteLine("Unknown");
        break;
}
Run Code Online (Sandbox Code Playgroud)

如果TypeCode不满足您的需求,那么您可以简单地将列类型转换为您自己的自定义枚举,如John的回答中所述.