无法将类型 'System.DateTime' 的对象转换为类型 'System.String'。 C#

Unable to cast object of type 'System.DateTime' to type 'System.String'. c#

我正在尝试显示日期并将其恢复到 Labels = strings, 但是我在行 list.Add((string)myReader["Date"]);

上遇到错误

这是我的代码:

con.Open();
myReader = cmdDB.ExecuteReader();
List<string> list = new List<string>();
while (myReader.Read())
{
    list.Add((string)myReader["Date"]);
}

string[] strings = list.Select(x => x.ToString()).ToArray();
cartesianChart1.AxisX.Add(new Axis
{
    Title = "Date",
    Labels = strings
});

cartesianChart1.AxisY.Add(new Axis
{
    Title = "Sales",
    LabelFormatter = value => value.ToString()
});

有什么解决办法吗?谢谢! P.S。我正在使用 LiveCharts 和 MySQL.

你可以这样试试

list.Add(myReader["Date"].ToString());

如果需要,您还可以在 ToString(dd-MM-yyyy) using Custom Date and Time Format Strings

中对日期应用格式

list.Add(Convert.ToString(myReader["Date"]));

您的 Date 列似乎不是字符串而是日期时间列。

(string)myReader["Date"] 尝试将日期时间列显式类型转换为字符串,这是不可能的。但是 Convert.ToString 给出了你的值的字符串表示。

即使值为 nullConvert.ToString(object value) 也会 return null 而不是像 .ToString().

那样抛出异常

使用

 if (Convert.IsDBNull(columnValue))
 {
      return null;
 }
  return columnValue;

永远验证数据是否为 ​​null 或空以及 return 一个值

注意:如果我们在数据库中有 DateTime 类型的列,在 asp.net core/Csharp application

中有字符串类型的列

我们可以在存储过程级别将 DateTime 转换为字符串,如

例如

    date_format(ReferralDate, '%d/%m/%Y') as ReferralDate,

存储过程的完整示例

SELECT  referralCostsID,
        ClientID,
        ReferralSource,
        date_format(ReferralDate, '%d/%m/%Y') as ReferralDate,
        AdCost,
        Notes

FROM referralcostssetup