私はこのエラーの回避策を見つけましたが、なぜこれが発生するのかについて本当に興味があり、他の誰かがこのエラーを持っているかどうか疑問に思っていました。
私の機能は次のとおりです。
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
誰もがそれを見たことがありますか?
さらに奇妙なのは、これを入力した場合です。
rating = decimal.Parse("4.0");
これは正常に機能します。4.0は私のDataReaderから出てくるものです。
前に言ったように、TryParseメソッドは正常に機能するので、持ち運びを妨げることはありませんが、誰かがそれに対する答えを持っているかどうかを確認することに本当に興味があります。
返信をお待ちしております!
ショーン
編集-解決済み
decimal.Parseメソッドは正常に機能し、関数が2回目に実行されたとき(ループ内にあったとき)、投稿は評価されなかったため、データリーダーからnull値が返されていました。COALESCEをSQLで計算にラップすると、問題はうまく解決しました。したがって、あなたが言ったように、なぜ、tryparseメソッドは例外をスローせず、デフォルトの0を_ratingに維持するだけでした。