DateTime.Ticks为可为空的日期时间

时间:2011-10-03 19:11:03

标签: c# datetime

在我的应用中,article.DatePublished是一个可以为空的DateTime字段。现在我有以下代码:

      list.Add(article.DatePublished.Ticks);

这里我收到编译错误,因为Ticks属性不适用于可空的DateTimes。

处理此问题的一种方法是:

if (article.DatePublished != null)
      list.Add(((DateTime)article.DatePublished).Ticks);

这有效,但这是一个优雅的解决方案吗?或者我们可以让它“更好”吗?

谢谢,

的Vivek

4 个答案:

答案 0 :(得分:5)

您需要获得.Value的{​​{1}}属性。

DateTime?

您可以使用if (nullableDate != null) // or if (nullableDate.HasValue) ticks = nullableDate.Value.Ticks; ,这会将空日期标准化为默认值nullableDate.GetValueOrDefault().Ticks,即DateTime

答案 1 :(得分:3)

正如伊卡洛斯所说,我会用:

if (article.DatePublished != null)
{
    list.Add(article.DatePublished.Value.Ticks);
}

甚至:

if (article.DatePublished.HasValue)
{
    list.Add(article.DatePublished.Value.Ticks);
}

根据您要做的事情,可能是LINQ会为您提供更简单的代码:

var list = articles.Select(article => article.DatePublished)
                   .Where(date => date != null)
                   .Select(date => date.Ticks)
                   .ToList();

答案 2 :(得分:1)

if (article.DatePublished.HasValue)
{
      list.Add(article.DatePublished.Value.Ticks);
}

答案 3 :(得分:0)

如果您总是想要添加一个值,包括默认值,如果DatePublished为null,您可以执行类似

的操作
var date = article.DatePublished ?? new DateTime(whatever);
list.Add(date.Ticks);