选择整个数组或转换 C#
本文关键字:转换 数组 选择 | 更新日期: 2023-09-27 18:19:04
我有一个自定义数据类型,本质上存储为长x
和十进制y
,并且它们是索引的,所以我有data.Series["example"].Values[].x
和data.Series["example"].Values[].y
但我想访问所有元素,它一直要求一个预期的值,我有空的方括号,但有大约 3000+ 个元素, 所以显然不会手动输入每个元素,我的最终目标是我想绘制元素,一个显然是 X,另一个显然是 Y。我在MS图表的DataBindXY()
方法中拥有它。
是否需要先将其转换为另一种类型(如果是,是什么类型以及如何?(,还是我只是在这里缺少一些简单的东西?但是我不知道如何选择整个数组作为图表的数据。
谢谢!
编辑:我现在正在尝试从 y 数组中获取最大值和最小值,这些值的类型为 decimal[],然后将最大值/最小值设置为图表 y 轴范围,以便它正确显示,但是当我尝试设置"十进制 yValMax = yvals。Max((;" 然后设置图表。图表[0]。轴 Y.最小值 = yValMin;我收到一个 ArgumentOutOfRange 异常,我已经对其进行了调试,并且它在 yValMax 和 yValMin 变量中获得了正确的值,但在尝试将其设置为 Y 轴边界时失败了?帮助??
听起来你正在使用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
。如果是常规Array
,List
或Collection
你应该没问题。
不过,如果没有,您可以为每个(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 条记录,所以我对此进行了硬编码,但你明白了。