В нашем приложении мы работаем с DataTable
много.Это продиктовано интерфейсом с другой системой.Часто столбец в одном из этих DataTable фактически является перечислением, которое тогда имеет тип данных Int16
.В настоящее время мы используем магические константы повсюду, но это не красиво.Реальное перечисление было бы намного лучше, но как вы можете написать элегантное сравнение?Особенно учитывая, что DBNull
также иногда является допустимым значением.
В идеале мы бы написали это:
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
Что выглядит безобразно.Любые идеи о том, как сделать это красивее и проще писать?