【发布时间】:2012-06-05 19:03:22
【问题描述】:
我有一个 Linq 查询,它由我从数据库中提取的这个日期时间字段组成
TerminationDate = base.ConvertFromUtcToCentral(r.TerminationDate.ToString())
使用的函数是这样设计的
public DateTime ConvertFromUtcToCentral(string UtcTime)
{
if (UtcTime != "")
{
DateTime? retValue = TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime
(UtcTime), USTimeZones.Central);
return Convert.ToDateTime(retValue);
}
else
return Convert.ToDateTime(null);
}
但每当我返回 null 时,它都会在网格中显示我将此查询分配给的最小日期。但是,当它为 null 时,它应该只显示 null 而不是 min date。你能告诉我如何处理这个问题吗?如果使用三元运算符更好,请告诉我。
限制:不能更改函数重运行类型,因为它在多个地方使用
【问题讨论】:
-
如果 DateTime 实际上为 NULL,则作为字符串 UtcTime 传递的内容是什么?
-
如果数据库中的 UtcTime 实际上为空,则将传递空字符串 ""
-
r.TerminationDate的类型到底是什么,为什么要把它转换成string,然后又从string转换成DateTime? -
据我所知,没有办法让它显示为空,因为 DateTime 空值与我认为是 1900 年 1 月 1 日上午 12:00 的最小值相同沿着这些思路。是否有特定原因需要它返回 null 而不是 min date?如果是这样,在哪里需要有空值?在数据库中还是在您的代码中?
-
一个函数在多个地方使用不应该阻止你重构它,如果这是要求的话。在这种情况下,这似乎是最合理的前进方式。