0

我在课堂上定义了这个

 public DateTime? LineCheckSubmitDateTime { set; get; }

我需要使用我的初始化这个变量gridview

在此处输入图像描述

但有时我需要将此值保留为空,但是当我离开时它会返回1 / 1 / 0001 12:00:00 AM

所以这是我的代码:

 newObj.LineCheckSubmitDateTime = (Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"))==DateTime.Parse("1 / 1 / 0001 12:00:00 AM") ) ?   Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime")):null;

所以两个问题:

1:此代码返回此错误:

Severity    Code    Description Project File    Line
Error   CS0173  Type of conditional expression cannot be determined because there is no implicit conversion between 'DateTime' and '<null>' 

2:你有更好的解决方案吗?

4

1 回答 1

2

该错误是因为您必须将条件运算符的至少一个操作数显式转换为 DateTime?

更好的方法是将其与 进行比较,DateTime.MinValue而不是将最小日期字符串转换为DateTime,并缓存转换后的值,然后在条件运算符中使用它,而不是将其转换两次。

var tempDateConverted = Convert.ToDateTime(gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime"));
 newObj.LineCheckSubmitDateTime = tempDateConverted == DateTime.MinValue ?
                                    null : (DateTime?) tempDateConverted;

您也可以在上述语句中显式转换null为。DateTime?

我不确定 中的LineCheckSubmitDateTime控件GridView,这里有可能它的值已经是一个DateTime对象,在object. 你也可以试试:

object obj = gridViewDetails.GetRowCellValue(rowHandle, "LineCheckSubmitDateTime");
newObj.LineCheckSubmitDateTime = (DateTime?) obj;

使用上面的代码,您不必调用Convert.ToDateTime.

于 2016-08-02T17:23:15.263 回答