我有这个代码块最终被序列化为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);
}
答案 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'。“错误。