0

我有这些数组:

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

字符串数组仅包含整数值。数据-20 -30 -12 0 10 20 30之类的。

现在想将这些值添加lineNeg1到 Devexpress 图表控件系列中,而无需循环。

现在一切正常,但由于循环,系统变得太慢。代码示例如下:

        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]<-Maybe this kind of something option is available

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

4

1 回答 1

1

你可以使用 Linq:

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

它仍然是一个 for 循环,但现在它被隐藏了!编译器需要将字符串一一转换为整数,因为它们是根本不同的东西,存储方式也大不相同。字符串是对象,而整数是本机类型。不幸的是,它不像 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();
于 2013-06-28T12:14:02.273 回答