2
在我们的应用程序中,我们使用了很多DataTable
。这是由另一个系统的接口决定的。通常这些DataTable中的一列中的列实际上是一个枚举,其后是Int16
数据类型。目前我们在各地都使用魔术常数,但那不太好。一个真正的枚举会好得多,但你怎么能写出一个优雅的比较?特别是考虑到DBNull
有时也是有效的值。如何优雅地比较枚举与DataTable单元格?
理想的情况下,我们可以写成这样:
if (tbl.Rows[0]["EnumColumn"] == MyEnum.SomeValue)
// Do stuff
但是,自然,这是行不通的。最接近我能来的是:
if (tbl.Rows[0]["EnumColumn"] != DBNull.Value && Convert.ToInt32(tbl.Rows[0]["EnumColumn") == (int)MyEnum.SomeValue)
// DO stuff
这看起来很丑陋。任何想法如何使这个更漂亮,更容易写?
会抛出异常的'DBNull'。哦,对不起,我的例子对此有一个错误。固定。 – 2011-04-20 11:43:32
我认为这个新代码会更好。我真的很喜欢使用通用的,但它似乎并没有在我的编译器工作:( – 2011-04-20 11:50:24
检查在这里:http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to- an-enum – 2011-04-20 12:00:18