跳过潜在的空值c#

时间:2010-07-27 13:25:38

标签: c# .net asp.net-mvc json fullcalendar

我有这个代码块最终被序列化为JSON,用于Jquery FullCalender插件。 ToUnixTimeSpan方法在DateTime对象中进行处理,并返回自1970年以来的秒数。

DateEnd可以为null。在这段代码中,如果DateEnd为null,我如何测试null并跳过end = ToUnixTimespan(e.DateEnd)?有一个C#等同于groovy安全操作符吗?

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
                         };

有关ToUnixTimespanMethod的更多信息:

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

2 个答案:

答案 0 :(得分:6)

那么,怎么样:

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

由于我们不知道ToUnixTimespan返回的类型,因此很难确定。

答案 1 :(得分:3)

等一下......为什么我在评论上浪费这个,当我可以利用Jon的工作来代表某些代表时......; - )

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

那应该解决“无法转换'System.DateTime?'到'System.DateTime'。“错误。