2014-07-25 4 views
0

여기서 정수로 배정도로 캐스트해야합니다.지정된 캐스트가 유효하지 않습니다 (double precision부터 int까지)

:

obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ? 
       (Int32)reader["DateDiff"] : 0; 

유형 : 유형 database table 입력 double precisionint

  • DateDiff

    • DayDifference.

    오류 : 당신은 그렇게 할 수 없습니다

    object x = 32.5; 
    int y = (int) x; 
    

    :

    지정한 캐스트가

  • +1

    'reader [ "DateDiff"]'의 값은 정확히 무엇입니까? 디버그하고 알려주십시오. –

    +0

    @ SonerGönül, 'DateDiff'는'value '로 구성됩니다. 200. – Meem

    답변

    7

    당신이하고있는 것은 동일합니다 유효하지 않습니다 - unbox하면 값의 실제 유형을 unbox해야합니다. . double의 박싱에

    object x = 32.5; 
    int y = (int) (double) x; 
    

    캐스트, 그리고 int에 대한 캐스트는 intdouble 변환 :

    그래서 당신은 필요한 것입니다. 당신은 당신의 코드에서 같은 작업을 수행 할 수 있습니다

    (Int32)(Double) reader["DateDiff"] : 0; 
    

    1 글쎄, 몇 가지 모듈로. CLR을 사용하면 intuint 또는 기본 유형이 int 인 열거 형 등을 해제 할 수 있습니다.

    +0

    Yup! 알았다. 정말 고맙습니다. – Meem

    관련 문제