如何使用数据库中的数据在 C# 中创建折线图?

How to create a line chart in c# using data from database?

我想创建一个折线图,其中 x 轴显示日期,y 轴显示价格。

我已经从数据库中创建了所有日期和价格的列表。

var ListOfDates = DBaccess.GetOperationToList().Select(x =>x.Data.ToString());
var ListOfPrices = DBaccess.GetOperationToList().Select(x => x.Price);

for (int i = 0; i < ListOfDates.Count(); i++)
{
    chart2.Series["s1"].Points.AddXY(ListOfPrices, ListOfPrices);
}

当我要创建点时出现以下错误"Points od data doesn't work value type 'System.Linq.Enumerable+WhereSelectEnumerableIterator'. You can use Double, Decimal, Single, int, long, uint, ulong, String, Datetime, short, ushort."

但是ListOfDates里面的Data是Datetime类型,Price是Double类型。如何更改类型?

要告诉 Series 实际数据类型是什么,请使用:

chart2.Series[0].XValueType = ChartValueType.DateTime;

您可以像在您的代码中一样在循环中添加 DataPoints,但您必须使用元素,而不是整个列表:

chart2.Series["s1"].Points.AddXY(ListOfDates[i], ListOfPrices[i]);

这假设两个列表以相等的长度对齐。

但建议使用DataBinding

如果您的数据源具有 命名属性,您可以使用这种形式的数据绑定:

chart2.Series[0].Points.DataBindXY(datalist, "date", datalist, "price");

如果没有,您可以像这样创建一个组合数据源:

var ListOfData = DBaccess.GetOperationToList()
                         .Select(x => new { date = x.Data, price = x.Price});

然后绑定:

 chart2.Series[0].Points.DataBind(ListOfData, "date", "price", "");

请注意,如果您将 x 值作为字符串添加,就像您所做的那样,它们将存储为 0s 并且您将无法将它们用于任何事情,无论是格式化、搜索还是对齐系列的点。