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

DateEnd 可能为空。在这段代码中,如果 DateEnd 为 null,我如何测试 null 并跳过 end = ToUnixTimespan(e.DateEnd)?是否有等效于 groovy 安全运算符的 C#?

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

最佳答案

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

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

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

关于c# - 跳过潜在的空值 c#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3344069/

10-12 15:33