我想检查DateTime变量"starttime"和"endtime"有null值,然后试图初始化到empty如下的价值,但我运行到下面的编译错误.实现这一目标的最佳方法是什么?
string htmllink = "";
DateTime? starttime = null;
DateTime? endtime = null;
htmllink = (dbNullCheck.isColumnNull(rdr, "html_link")) ? "" : rdr.GetString(3);
starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? "" : rdr.GetString(4);
endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? "" : rdr.GetString(5);
results.htmllist.Add(new gethtmllist() { resulthtmllink = htmllink,
duration = (starttime - endtime).ToString() });
Run Code Online (Sandbox Code Playgroud)
错误:
错误2无法将类型'string'隐式转换为'System.DateTime?'
更新: -
string htmllink = "";
htmllink = (dbNullCheck.isColumnNull(rdr, "html_link")) ? "" : rdr.GetString(3);
DateTime? starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? new DateTime() : rdr.GetDateTime(4);
DateTime? endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? new DateTime() : rdr.GetDateTime(5);
results.htmllist.Add(new gethtmllist()
{
resulthtmllink = htmllink,
duration = starttime.HasValue && endtime.HasValue ? (endtime.Value - starttime.Value).ToString() : ""
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用 string.Empty 来测试:starttime = string.IsNullOrEmpty(str) ? (DateTime?)null : DateTime.Now;
就成功了。所以你的代码可以是:
starttime = (dbNullCheck.isColumnNull(rdr, "start_time")) ? (DateTime?)null : rdr.GetDateTime(4);
endtime = (dbNullCheck.isColumnNull(rdr, "end_time")) ? (DateTime?)null: rdr.GetDateTime(5);
Run Code Online (Sandbox Code Playgroud)
更新 1:string.Empty 的 .Net Fiddle 示例:链接
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |