如何将字符串数组添加到chartcontrol系列中

时间:2013-06-28 11:54:28

标签: c# .net charts devexpress datasource

我有这些数组:

string[] Line1= data[3].ToString().Split(' ');
string[] Line2= data[4].ToString().Split(' ');

字符串数组仅包含整数值。数据类似于-20 -30 -12 0 10 20 30等等。

现在想要将lineNeg1中的这些值添加到Devexpress Chart Control Series中而不需要循环。

现在,事情正在发挥作用,但由于循环,系统变得太慢。代码示例如下:

        for (int i = 0; i < Line1.Length; i++)
        {
            int y = int.Parse(Line1[i]);
            SeriesPoint pt = new SeriesPoint(i, y);
            chartControl1.Series[0].Points.Add(pt);
        }

我有什么方法可以做到:Add string array to series without using loop

可能喜欢:series[0].addrange[Line1]&lt; - Maybe this kind of something option is available

我知道状态是错的,仍然只是想知道我在寻找什么。

1 个答案:

答案 0 :(得分:1)

你可以使用Linq:

int[] ints = Line1.Select(x => int.Parse(x)).ToArray();

它仍然是一个for循环,但现在它被隐藏了!编译器需要逐个将字符串转换为int,因为它们是根本不同的东西并且存储方式完全不同。字符串是对象,而整数是本机类型。它不像Javascript或PHP,遗憾的是字符串和整数在运行中被转换。所以这对你没什么帮助,只是语义上的糖。

现在,就添加系列而言,问题可能是每次添加一个点时图表都会重绘。您是否尝试过这样的代码:

chartControl1.SuspendLayout();
for (int i = 0; i < Line1.Length; i++)
    {
        int y = int.Parse(Line1[i]);
        SeriesPoint pt = new SeriesPoint(i, y);
        chartControl1.Series[0].Points.Add(pt);
    }
chartControl1.ResumeLayout();