无法将类型为“System.DateTime”的对象强制转换为“System.String”。 C#

时间:2017-03-01 06:23:21

标签: 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()
        });

任何解决方案?谢谢!附:我正在使用livechart和mysql

4 个答案:

答案 0 :(得分:3)

您可以尝试这样

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

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

中将格式应用于您的日期

答案 1 :(得分:0)

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

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

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

即使值为nullConvert.ToString(object value)也会返回null,而不是像.ToString()那样抛出异常。

答案 2 :(得分:0)

使用

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

每次验证数据为null还是emty并返回值

答案 3 :(得分:0)

注意:如果我们在DataBase中有DateTime类型的列,在asp.net core/Csharp应用中有String类型

我们可以在存储过程级别将 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