C# 将DateTime转换为DateTime?(零合并?)

C# 将DateTime转换为DateTime?(零合并?),c#,mysql,C#,Mysql,我有个小问题。在我的数据库中,我的DateTime(?)的auto属性为null。我正在使用具有DateTime属性的RentalTo()类?返回日期。大概是这样的: public class RentalDTO { public DateTime? ReturnDate { get; set; } public RentalDTO() { } public RentalDTO(DateTime?

我有个小问题。在我的数据库中,我的DateTime(?)的auto属性为null。我正在使用具有DateTime属性的RentalTo()类?返回日期。大概是这样的:

    public class RentalDTO
    {
        public DateTime? ReturnDate { get; set; }

        public RentalDTO()
        {

        }
        public RentalDTO(DateTime? returnDate)
        {
            ReturnDate = returnDate;
        }
这个问题。如何使用sql reader将数据库DateTime转换为RentalTo DateTime

public RentalDTO RentalDTOFromMySqlDataReader(MySqlDataReader reader)
        {
            RentalDTO rental = new RentalDTO(
                Convert.ToDateTime(reader["returndate"]) // How to convert this? Convert.ToDateTime Does not work
                );

            return rental;
        }

Convert.ToDateTime不起作用。它给出了一个错误。

很抱歉,我会在注释中键入此内容,但我还不允许写注释,但我的猜测是尝试使用
DateTime.TryParse()并指定日期的格式,可能字符串的格式无效,不是吗?它还将处理空值。

您应该检查
读取器[“returndate”]
是否为
空值。然后将该值强制转换为可为null的日期时间

public RentalDTO RentalDTOFromMySqlDataReader(MySqlDataReader)
{
DateTime?DateTime=string.IsNullOrEmpty(读卡器[“returndate”])?(DateTime?)null:DateTime.Parse(读卡器[“returndate”]);
RentalTo rental=新的RentalTo(日期时间);
归还租金;
}

为什么不告诉我们,读卡器[“returndate”]实际上是什么,它不是有效的日期时间“Convert.ToDateTime不起作用”并没有真正告诉我们什么。“它给出了一个错误”——那么错误是什么呢?在编写堆栈溢出问题时,请尝试预测对更多信息的任何明显请求。假设你试图帮助某人,他们说他们的代码出错。你第一个明显的问题是不是“错误是什么”?
reader.GetDateTime(“returndate”)
可能是第一个解决方案…@JonSkeet我会在下一篇文章中记住它,谢谢你的提示。你不必等待下一篇文章-你可以编辑这个问题来大大改进它。