跳过潜在的空值c#
我有这段代码,最终被序列化为JSON,用于Jquery FullCalendar插件。ToUnixTimeSpan方法在DateTime对象中执行任务,并返回自1970年以来的秒数 DateEnd可以为null。在这段代码中,如果DateEnd为null,如何测试null并跳过end=ToUnixTimespan(例如DateEnd)?是否有一个C#等价于groovy安全操作符跳过潜在的空值c#,c#,.net,asp.net-mvc,json,fullcalendar,C#,.net,Asp.net Mvc,Json,Fullcalendar,我有这段代码,最终被序列化为JSON,用于Jquery FullCalendar插件。ToUnixTimeSpan方法在DateTime对象中执行任务,并返回自1970年以来的秒数 DateEnd可以为null。在这段代码中,如果DateEnd为null,如何测试null并跳过end=ToUnixTimespan(例如DateEnd)?是否有一个C#等价于groovy安全操作符 var listEvents = from e in eventRepository.GetAllEvents()
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
};
有关TounixTimeSpan方法的更多信息:
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)
很难说清楚,因为我们不知道ToUnixTimespan返回的类型等等。。。当我可以利用Jon的工作来做一些宣传时,为什么我要把这些浪费在评论上…-)
这应该可以解决“无法从‘System.DateTime’转换为‘System.DateTime’”的错误。@Jon[end=e.DateEnd??ToUnixTimespan(e.DateEnd);]?@Rafael e.Belliard,如果e.DateEnd为空,则调用ToUnixTimespan,这与@Doozer1979想要的几乎相反。噢,挑战“飞碟”的传说@拉斐尔:斯特拉格说了什么,它假设所需的
end
类型与e.DateEnd
类型相同,我怀疑它不是……谢谢大家。Jon使用该行代码会导致以下错误:无法从“System.DateTime”转换为“System.DateTime”。谢谢你的帮助,对C来说还是比较新的#
end = e.DateEnd == null ? (long?) null : ToUnixTimespan(e.DateEnd.Value)