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