0

10 進数から 16 進数への変換に問題があります。

これが私のコードです:

select new
{
    MessageID = table1.Field<Int32?>("MessageID"),
    MessageIDHex = (String)table1.Field<Int32>("MessageID").ToString("X")
}

それは私にエラーを与える

DBNUll.Value では System.In32 に変更できません

だから私は試しました

MessageIDHex= (String)table1.Field<Int32?>("MessageID").ToString("X")} 

しかし、それは私に別のエラーを与えます。

どうすれば修正できますか、またはそれを解決する別の方法があります。

4

1 に答える 1

2

どうやら、MessageIDDBNull の可能性があります。最も簡単な解決策は、値をnull 許容の intとして読み取ることです(変換エラーの発生を防ぐため)。Fieldnull 許容型で使用する場合、DBNullは自動的に に変換され、演算子を使用nullして強制的に 0 にすることができます。??

MessageIDHex = (table1.Field<Int32?>("MessageID") ?? 0).ToString("X")

または、必要に応じて、データベースの DBNull 値を空または NULL 文字列にすることもできますMessageIDHex

MessageIDHex = table1.IsNull("MessageID") ? "" : table1.Field<Int32>("MessageID").ToString("X")
MessageIDHex = table1.IsNull("MessageID") ? null : table1.Field<Int32>("MessageID").ToString("X")
于 2012-09-26T08:10:37.270 に答える