选择整个数组或转换 C#

本文关键字:转换 数组 选择 | 更新日期: 2023-09-27 18:19:04

我有一个自定义数据类型,本质上存储为长x和十进制y,并且它们是索引的,所以我有data.Series["example"].Values[].xdata.Series["example"].Values[].y但我想访问所有元素,它一直要求一个预期的值,我有空的方括号,但有大约 3000+ 个元素, 所以显然不会手动输入每个元素,我的最终目标是我想绘制元素,一个显然是 X,另一个显然是 Y。我在MS图表的DataBindXY()方法中拥有它。

是否需要先将其转换为另一种类型(如果是,是什么类型以及如何?(,还是我只是在这里缺少一些简单的东西?但是我不知道如何选择整个数组作为图表的数据。

谢谢!

编辑:我现在正在尝试从 y 数组中获取最大值和最小值,这些值的类型为 decimal[],然后将最大值/最小值设置为图表 y 轴范围,以便它正确显示,但是当我尝试设置"十进制 yValMax = yvals。Max((;" 然后设置图表。图表[0]。轴 Y.最小值 = yValMin;我收到一个 ArgumentOutOfRange 异常,我已经对其进行了调试,并且它在 yValMax 和 yValMin 变量中获得了正确的值,但在尝试将其设置为 Y 轴边界时失败了?帮助??

选择整个数组或转换 C#

听起来你正在使用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 条记录,所以我对此进行了硬编码,但你明白了。