2014-02-18 39 views
0

我需要在运行时使用从数据库返回的值作为属性创建OdbcParameter的实例。 我的问题是数据类型的描述返回为大写的字符串,这就是为什么Enum.Parse或Enum.TryParse没有我的字符串转换为它的枚举的correspondig值:将字符串强制转换为OdbcType枚举

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

Enum.TryParse还有一个布尔参数忽略的情况下,将工作MSDN Link

+0

非常感谢!正是我需要的。 – Daniel

1

你想要的Enum.Parse重载的构造函数有一个ignoreCase参数即

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