2

基本的に私はリストを持っています:

 List<Decimal> SortOrders = new List<Decimal>();

そしてDataRow。リストにコントロールのアイテムが含まれているかどうかを比較したいと思います。しかし、私は例外を得ました、

「オブジェクト」から「10進数」に変換できません

DataRow dr = dataSetSomething.Tables[0].NewRow();
...
dr["SortOrder"] = Convert.ToDecimal(numericOrder.Value);// works fine here
if (SortOrders.Contains(dr["SortOrder"]))// exception here, Why?
{
}

手伝ってくれてありがとう。

4

2 に答える 2

2

のタイプなので、そこに入れてdr["SortOrder"]も。実際に小数であることがわかっている場合は、次のようにキャストできます。objectdecimal

if (SortOrders.Contains((decimal)dr["SortOrder"]))
于 2012-07-30T20:34:02.107 に答える
2

のタイプはdr["SortOrder"]ですObject

.NETのすべてのタイプオブジェクトであるため(すべてのタイプはObject、直接または継承チェーンを介して継承するため)、にを割り当てることdecimalobject問題ありません。

反対は真実ではありません-すべてobjectのがそうであるわけではありませんdecimal

期待される動作を得るには、キャストする必要があります。

 if (SortOrders.Contains((decimal)dr["SortOrder"]))

(基になるタイプがでない場合は例外をスローしますdecimal)。

于 2012-07-30T20:34:12.170 に答える