sdr は私の sqldatareader であり、10 進数型の curPrice 値が null であることを確認したいと考えています。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
これは私が得ているエラーメッセージです:
型「10 進数」を暗黙的に変換できませんか? 「10進数」に。明示的な変換が存在します (キャストがありませんか?)
どこが間違っているのか、誰か教えてください。
sdr は私の sqldatareader であり、10 進数型の curPrice 値が null であることを確認したいと考えています。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
これは私が得ているエラーメッセージです:
型「10 進数」を暗黙的に変換できませんか? 「10進数」に。明示的な変換が存在します (キャストがありませんか?)
どこが間違っているのか、誰か教えてください。
decimal?null 許容の10 進数であることを示します。プロパティを使用しValueて実際の値を取得する必要があります (存在する場合は、 で決定されますHasValue)。
は null 非許容の 10 進数であると想定しています。その場合、三項演算子の真の側からcurPrice返すよりも、より良い値を返す必要もあります。null
null 許容型に変換curPriceするか、null 許容型の .Value プロパティを使用します。
curPriceがクラスのプロパティである場合
public decimal? curPrice
{
get;
set;
}
decmial?タイプを に変換するのはどうdecimalですか?
がnull のinrec.curPrice場合、どのような値を取得する必要があります。sdr.GetDecmial(7)
inrec.curPrice = sdr.GetDecimal(7) ?? 0M;
返されたものが null の場合は、0 を使用することをお勧めします。0M他の10進数値に変更しない場合。
--- 再生後に更新
どうinrec.curPrice = sdr.IsDBNull(7) ? 0M : sdr.GetDecimal(7);ですか?