2010-07-27 6 views
2

Jquery FullCalender 플러그인에서 사용하기 위해 결국 JSON에 직렬화되는 코드 블록이 있습니다. ToUnixTimeSpan 메서드는 DateTime 개체에서 작업을 수행하고 1970 년 이래로 초 수를 반환합니다.잠재적 인 nulls 건너 뛰기 C#

DateEnd는 null 일 수 있습니다. 이 코드 블록에서 null을 테스트하고 끝내기 = ToUnixTimespan (e.DateEnd)을 건너 뛸 수 있습니까? DateEnd가 null이면? Groovy 안전 연산자와 동일한 C#이 있습니까? ToUnixTimespanMethod에 대한

var listEvents = from e in eventRepository.GetAllEvents() 

         select new 
         { 
          id = e.EventID, 
          title = e.EventTitle, 
          start = ToUnixTimespan(e.DateStart), 

          end = ToUnixTimespan(e.DateEnd), 
          url = "/Events/Details/" + e.EventID 
         }; 

추가 정보 :

private long ToUnixTimespan(DateTime date) 
    { 
     TimeSpan tspan = date.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0)); 
     return (long)Math.Truncate(tspan.TotalSeconds); 
    } 

답변

3

기다립니다-A-분 ... 이유는 무엇 일부 담당자에 대한 존의 작품을 활용 할 수있는 코멘트에이 낭비하고 .. ;-) 해결해야

end = e.DateEnd == null ? (long?) null : ToUnixTimespan(e.DateEnd.Value) 

는 "변환 할 수 없습니다 from 'System.DateTime?' 'System.DateTime'으로 변경하십시오. " 오류.

+0

두 분 모두에게 많은 도움이되었습니다. – MrBliz

6

음,에 대한 방법 :

end = e.DateEnd == null ? (long?) null : ToUnixTimespan(e.DateEnd) 

그것은 우리가 ToUnixTimespan에 의해 반환되는 유형을 알고하지 않기 때문에 확실히 말할 어렵다.

+1

@ 존 어때 [끝 = e.DateEnd ?? ToUnixTimespan (e.DateEnd);]? – rebelliard

+2

@Rafael E. Belliard, eDateEnd가 null 인 경우 ToUnixTimespan을 호출합니다. 이는 @ Doozer1979가 원하는 것과 거의 반대입니다. – strager

+1

우, "THE SKEET"이라는 전설에 도전 해보십시오! –