繁体   English   中英

无法将日期时间转换为 C# 中的字符串

[英]Can't convert DateTime to string in C#

嗨,我正在尝试进行预订页面。 如果有人进行预订,该日期将保存在数据库中,并且也会显示在他们的页面上。 “dayid”列的类型是 postgresql 中的日期。 在 razor 页面 C# 中,我将 DateTime 类型用于变量 Dayid。 我需要将数据库中的 dayid 值转换为字符串。 但我不知道如何解决这个错误:“方法'ToString'没有重载需要1个参数”这是代码

public List<ReservationModel> ShowReservation()
        {
            var cs = Database.Database.Connector();
            List<ReservationModel> res = new List<ReservationModel>();
            using var con = new NpgsqlConnection(cs);
            {
                string query = "Select dayid, locationid FROM reservation";
                using NpgsqlCommand cmd = new NpgsqlCommand(query, con);
                {
                    cmd.Connection = con;
                    con.Open();
                    using (NpgsqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            res.Add(new ReservationModel { Dayid = dr["dayid"].ToString("MM/dd/yyyy"), Locationid = dr["locationid"].ToString() });
                        }
                    }
                    
                    con.Close();
                }
            }


            return res;
        }

NpgsqlDataReader索引器的编译时类型只是object ,并且object.ToString()方法是无参数的。 您需要DateTime类型的表达式来调用所需的ToString重载。

可以改为转换为DateTime

while (dr.Read())
{
    res.Add(new ReservationModel
    {
        Dayid = ((DateTime) dr["dayid"]).ToString("MM/dd/yyyy"),
        Locationid = dr["locationid"].ToString() 
    });
}

(或者找到列索引并调用dr.GetDateTime(...) 。)

但是,我鼓励您更改 model ( ReservationModel ) 以将值保留DateTime而不是此时将其转换为字符串。 一般来说,最好尽可能多地将数据保持在最自然的数据类型中,只在边界处将其转换为文本/从文本转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM