将字符串转换为OdbcType枚举

时间:2014-02-18 13:01:21

标签: c# string casting enums

我需要在运行时使用从数据库返回的值作为属性来创建OdbcParameter的实例。 我的问题是数据类型的描述是以大写字母的形式返回的,这就是为什么Enum.Parse或Enum.TryParse无法将我的字符串转换为它的枚举对应值:

var datatype = (OdbcType)Enum.Parse(typeof(OdbcType), "NVARCHAR"); 

为了解决这个问题,我创建了一个词典:

public static Dictionary<string, OdbcType> OdbcDataTypeDictionary = new Dictionary<string, OdbcType>()
        {
            {"BIGINT", OdbcType.BigInt},
            {"BINARY", OdbcType.Binary},
            {"BIT", OdbcType.Bit},
            {"CHAR", OdbcType.Char},
            {"DATE", OdbcType.Date},
            {"DATETIME", OdbcType.DateTime},
            {"DECIMAL", OdbcType.Decimal},
            {"DOUBLE", OdbcType.Double},
            {"IMAGE", OdbcType.Image},
            {"INT", OdbcType.Int},
            {"NCHAR", OdbcType.NChar},
            {"NTEXT", OdbcType.NText},
            {"NUMERIC", OdbcType.Numeric},
            {"NVARCHAR", OdbcType.NVarChar},
            {"REAL", OdbcType.Real},
            {"SMALLDATETIME", OdbcType.SmallDateTime},
            {"SMALLINT", OdbcType.SmallInt},
            {"TEXT", OdbcType.Text},
            {"TIME", OdbcType.Time},
            {"TIMESTAMP", OdbcType.Timestamp},
            {"TINYINT", OdbcType.TinyInt},
            {"UNIQUEIDENTIFIER", OdbcType.UniqueIdentifier},
            {"VARBINARY", OdbcType.VarBinary},
            {"VARCHAR", OdbcType.VarChar}
        };

它正在运作,但我不相信这是最好的解决方案。

有没有人对更好的解决方法有任何想法?

2 个答案:

答案 0 :(得分:3)

Enum.TryParse有另一个布尔参数来忽略大小写,它将起作用MSDN Link

答案 1 :(得分:1)

您希望Enum.Parse的重载构造函数具有ignoreCase参数,即

(OdbcType)Enum.Parse(typeof(OdbcType), "NVARCHAR", true);