跳过潜在的空值c#

MrB*_*liz 2 .net c# 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
                         };
Run Code Online (Sandbox Code Playgroud)

有关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);
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

那么,怎么样:

end = e.DateEnd == null ? (long?) null : ToUnixTimespan(e.DateEnd)
Run Code Online (Sandbox Code Playgroud)

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

  • @Rafael E. Belliard,如果e.DateEnd为null,则调用ToUnixTimespan,这与@ Doozer1979想要的完全相反. (2认同)