1
command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = 
     EndDate == null ? 
        (DateTime?)null : 
        DateTime.Parse(EndDate.ToShortDateString() + " " + EndTime);

EndDate 是 DateTime 类型吗?EndTime 只是一个包含时间的字符串。但它在解析时给了我错误,因为 EndDate 是一个可为空的 DateTime。我该如何解析这个?

4

4 回答 4

5

由于 EndDate 是可空的,因此您可以像这样解析它。

DateTime.Parse(EndDate.Value.ToShortDateString() + " " + EndTime);
于 2013-10-03T07:05:15.247 回答
2

尝试使用下面的值

DateTime.Parse(EndDate.GetValueOrDefault().ToShortDateString() + " " + EndTime);
于 2013-10-03T07:06:41.983 回答
0

我通常使用default(DateTime?),您还需要转换为可为空的 DateTime 对象:

return EndDate.HasValue ? DateTime.Parse(EndDate.Value.ToShortDateString() + " " + EndTime) as DateTime? : default(DateTime?)
于 2013-10-03T07:04:08.860 回答
0

您需要使用:EndDate.HasValue.ToShortDateString():

转换您的代码:

command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = 
EndDate.HasValue == false ? 
(DateTime?)null : 
DateTime.Parse(EndDate.HasValue.ToShortDateString() + " " + EndTime);

您还可以编写以下内容:

        var endDateParameter = endDate.HasValue ?
        new SqlParameter("EndDate", DateTime.Parse(EndDate.HasValue.ToShortDateString() + " " + EndTime)) :
        new SqlParameter("EndDate", typeof(System.DateTime));

干杯,诺亚

于 2013-10-03T07:30:09.500 回答