次のコード:DBNullをintに割り当てようとすると、どのようにプリエンプトできますか?
foreach (DataRow fillRateDataRow in dtFillRateResults.Rows)
{
. . .
var frbdbc = new FillRateByDistributorByCustomer
{
ShortName = fillRateDataRow["ShortName"].ToString(),
Unit = fillRateDataRow["Unit"].ToString(),
CustNumber = fillRateDataRow["Custno"].ToString(),
MemberItemCode = fillRateDataRow["MemberItemCode"].ToString(),
Qty = Convert.ToInt32(fillRateDataRow["Qty"]),
QtyShipped = Convert.ToInt32(fillRateDataRow["QtyShipped"]),
ShipVariance = fillRateDataRow["ShipVariance"].ToString(),
CWeek = fillRateDataRow["CWeek"].ToString(),
PAItemCode = fillRateDataRow["PAItemCode"].ToString(),
PADescription = fillRateDataRow["PADescription"].ToString(),
TransactionType = fillRateDataRow["TransactionType"].ToString(),
SplitCase = fillRateDataRow["SplitCase"].ToString(),
ReasonCode = fillRateDataRow["ReasonCode"].ToString(),
ReasonDescription = fillRateDataRow["ReasonDescription"].ToString(),
CompanyName = fillRateDataRow["CompanyName"].ToString()
};
は...、 "オブジェクトは、他のタイプにはDBNullからキャストすることはできないとしながら、偉大に一度失敗し 例外出典:mscorlib 例外のStackTrace:System.DBNullで。 (Object値)System.Convert.ToInt32で (プロバイダーするIFormatProvider)」
System.IConvertible.ToInt32は、だから、数量またはQtyShippedのいずれかが、時々はDBNull(文字列の海に囲まれただけint型ヴァルス)しているようです。
「DBNullなら0にvarを代入する」と言って例外を避ける方法はありますか?あなたはそれをたくさん行う必要がある場合は、読みやすくするために、あなたのコードを縮めていくだろう、このタスクのためのヘルパーメソッドを作り、
QtyShipped = fillRateDataRow["QtyShipped"] != DBNull.Value ? Convert.ToInt32(fillRateDataRow["QtyShipped"]) : 0
:
を私は2番目のためにあなたの有益な編集を見て、それは明らかに星はないRIGO、によって抹消...そしてTyCobbによって復活しました。編集の問題は起こっています! –
@ B.ClayShannon彼はコンパイルエラーを修正しましたが、その理由で彼の編集が承認されました。ありがとうございました! – dasblinkenlight