1

我正在尝试显示日期并将其恢复为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()
});

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

4

4 回答 4

7

你可以这样尝试

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

如果需要,您还可以使用自定义日期和时间格式字符串将格式应用于 ToString(dd-MM-yyyy) 中的日期

于 2017-03-01T06:24:47.897 回答
1

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

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

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

即使值为null,Convert.ToString(object value)也会返回null而不是抛出异常.ToString()

于 2017-03-01T06:27:19.867 回答
0

利用

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

验证是否数据为 null 或 emty 并返回一个值

于 2020-03-13T03:52:05.230 回答
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
于 2020-12-23T08:55:07.230 回答