无法在C#中将DateTime转换为字符串
c#
嗨,我正在尝试制作预订页面。如果有人进行预订,该日期会保存在数据库中,并且也会显示在他们的页面上。'dayid' 列的类型是 postgresql 中的日期。在剃刀页面 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(...)
。)
但是,我鼓励您更改模型 ( ReservationModel
) 以将值保留为aDateTime
而不是此时将其转换为字符串。一般来说,最好在尽可能多的时间内将数据保持在其最自然的数据类型中,仅在边界处将其与文本进行转换。