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

具体来说,我需要将内置基本类型(int,字符串,十进制,DateTime等)映射为:

  • SomeEnum.Numeric
  • SomeEnum.Bool
  • SomeEnum.DateTime
  • SomeEnum.String
  • SomeEnum。未知
  • SomeEnum.Null

  • 我该怎么办?

    最佳答案

    如果内置的 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;
    }
    

    如果TypeCode不满足您的需求,则可以按照John's answer中的描述将列类型转换为您自己的自定义枚举。

    10-06 05:01