2009-07-12 7 views
2

C#에서 DB.Null을 10 진수로 변환 할 수있는 방법이 있습니까?C에서 DB.Null을 10 진수로 변환하는 방법 #

Object[] returnvalue = new Object[1]; 
returnvalue[0] = null; 
returnvalue[0] = Convert.ToDecimal(returnvalue[returnvalue.Length - 1]); 

처럼 비록 CLR은 DBNull.Value 유형은 주조 할 수 없음을 말하고있다. 아직도 내가 알고 싶다 거기에있다

어떤 주위를 해결할 수 있습니까? 미리 감사드립니다.

+0

가 어디 예에서'DBNull'의를? 그것은 단순한'null'입니다. –

+0

DBNull은 null과 약간 다릅니다. Null은 사용할 수있는 객체가 없음을 의미합니다. DBNull은 값을 알 수 없음을 의미합니다. DBNull을 얻은 경우 정의에 따라 현재 값을 알 수 없습니다. 어떻게 그것을 십진수로 변환 할 수 있습니까? 기본값을 직접 결정하고 할당해야합니다. –

답변

7

null을 어떻게할까요? 그것은 널 (null)입니다, 아무것도, 나다는 ...

말하기를, 당신의 최선의 방법 대신, nullDBNull하지만 모두가 중요한이 어떤 default(decimal)/ DBNull (또는 null 위의 경우) 사용/반환을 확인하는 것입니다 단지 디폴트 값과의 의미상의 차이; 그들은 가치가 없기 때문에 아마도 당신이하고 싶은 것이 아닙니다.

0

DBNull을 Decimal로 변환해야한다면 소수에 어떤 값을 주겠습니까?

더 효과적으로 정상적으로 작동하지 않는 Decimal.TryParse() 함수가 있다고 생각합니다.

5

DBNullnull 사이에 큰 차이가 있습니다. 당신의보기는 보여드립니다 null ...

하지만 답변은; 정말로 ... 당신이 그것을 줄 수있는 가치는 무엇입니까?

테스트하고 기본값을 사용하거나 (일명 decimal?를) Nullable<decimal> 사용할 수 있습니다 null (안 DBNull)

decimal? valOrNull = (decimal?)returnvalue[0]; 

또는으로

계정으로 DBNull를 취할 :

object val = returnvalue[0]; 
decimal? valOrNull = (val == null || val is DBNull) ? (decimal?)null 
      : (decimal?)val; // or convert if it is a string etc 
3

반환 값에 nullable-decimal을 사용하는 것이 고려 되었습니까?

DB.Null을 명시 적으로 처리해야하지만 null과 다르므로 사례를 구분할 수 있습니다.

다음과 같이 보일 수있는 코드 ...

if (value == DB.Null) 
    return null; 
else return decimal.Parse(value.ToString()); 
3
 object foo = DBNull.Value; 
     decimal d = 0; 

     d = (decimal)(foo as decimal? ?? 0); // handles dbnull fine with default 0 

     MessageBox.Show(d.ToString()); 

     foo = 1234M; 

     d = (decimal)(foo as decimal? ?? 0); // handles dbnull fine with default 0 

     MessageBox.Show(d.ToString()); 
+0

심지어 더 짧음 : 10 진수로 d = foo? ?? 0m –

0

이 도움이겠습니까?

returnvalue[returnvalue.Length - 1] is DBNull ? 0 : (decimal?)returnvalue[returnvalue.Length - 1] ?? 0 
1

당신은 단순히이 수행 할 수

Object[] returnvalue = new Object[1]; 
returnvalue[0] = DBNull.Value; //null from database 
returnvalue[0] = returnvalue[0] == DBNull.Value 
? null 
: (Nullable<decimal>) Convert.ToDecimal(returnvalue[returnvalue.Length - 1]); 
+0

그 교체 할 수 : ** ReturnValue를 [0] == DBNull.Value **에 : 가 Convert.IsDbNull **는 (ReturnValue를 [0]) ** 이 동일하게 작동 할 것이다. – fsbflavio

관련 문제