다음 코드 :와 "객체가 다른 종류의 DBNull이에서 캐스팅 할 수는 없지만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()
};
... 좋은 한 번 실패 예외 출처 :. mscorlib에 예외 스택 트레이스 : System.DBNull에서. System.Convert.ToInt32에서 System.IConvertible.ToInt32 (IFormatProvider를 공급자) (개체 값) "
그래서 수량 또는 QtyShipped 중 하나가 DBNull이 (문자열의 바다 가운데 유일한 INT 애송이들이다가) 때로는 것 같다.
"DBNull이면 0을 var에 할당"하고 예외를 피할 방법이 있습니까? 당신이 그것을 많이 할 필요가 있다면 당신은 더 나은 가독성을 위해 코드를 축소 할 것이이 작업을위한 도우미 메서드를 만드는
QtyShipped = fillRateDataRow["QtyShipped"] != DBNull.Value ? Convert.ToInt32(fillRateDataRow["QtyShipped"]) : 0
:
잠깐 당신의 유용한 편집을보고, 다음은 분명히 스타가 아닌 거리고, 말소되었다 ... 다음 TyCobb에 의해 복직. 편집 신체 상해가 발생합니다! –
@ B.ClayShannon 그는 컴파일 오류를 수정했기 때문에 편집을 승인 한 것입니다. 고맙습니다! – dasblinkenlight