选择整个数组或转换C#

时间:2014-08-21 03:53:19

标签: c# arrays syntax charts

我有自定义数据类型,基本上存储为长x和小数y,并且它们已编入索引,因此我有data.Series["example"].Values[].xdata.Series["example"].Values[].y但是我想访问所有的元素,它一直要求我有空方括号的值,但有3000多个元素,所以显然不会手动输入每个元素,我的最终目标是我想要图表元素,一个是X,另一个是Y。我在用于MS图表的DataBindXY()方法中使用它。

我是否需要先将其转换为其他类型(如果是这样的类型和方式?),或者我只是在这里错过了一些简单的东西?但我无法弄清楚如何选择整个数组作为我的图表的数据。

谢谢!

编辑: 我正在尝试从y数组中获取最大值和最小值,其类型为decimal []然后将max / min设置为图表y轴范围,因此它显示正确,但是当我尝试设置“十进制yValMax = yvals.Max();“然后设置chart.ChartAeas [0] .AxisY.Minimum = yValMin;我得到了一个ArgumentOutOfRange异常,我调试了它,它在yValMax和yValMin变量中得到了正确的值,但是当它试图将它设置为Y轴边界时失败了?帮助??

1 个答案:

答案 0 :(得分:0)

听起来你正在使用DataPointCollection。从DataBindXY()上的文档来看,似乎这样的内容适合您。

让以下chart成为您的DataPointCollection

chart.DataBindXY(
    data.Series["example"].Values.Select(val => val.x), 
    data.Series["example"].Values.Select(val => val.y)
);

这当然假设data.Series["example"].Values实现了IEnumerable。如果它是传统的ArrayListCollection,那么您应该没问题。

如果不是,你可以为每个(X和Y)创建自己的List

List<long> seriesX = new List<long>();
List<Decimal> seriesY = new List<Decimal>();
for (int ix = 0; ix < 3000; ix++)
{
    seriesX.Add(data.Series["example"].Values[ix].x);
    seriesY.Add(data.Series["example"].Values[ix].y);
}
chart.DataBindXY(seriesX, seriesY);

你说在数组中有大约3000条记录,所以我对其进行了硬编码,但是你得到了这些记录。