【问题标题】:create an array out of 2 List<double>从 2 个 List<double> 创建一个数组
【发布时间】:2011-03-18 22:46:27
【问题描述】:

更新 我尝试了 Crazy 的解决方案,但现在在 foreach 循环中显示数据时遇到问题:

            foreach(double data in ztr.GetCurveDataForTestType())
            {
            richTextBox1.AppendText("Voltage" + data + "    ---------    ");
            richTextBox1.AppendText("Current" + data + "\r\n");
            }

该代码打印出如下内容:

Voltage-0.175    ---------    Current-0.175  
Voltage-9.930625E-06    ---------    Current-9.930625E-06  
Voltage-0.171875    ---------    Current-0.171875  
Voltage-9.53375E-06    ---------    Current-9.53375E-06  
Voltage-0.16875    ---------    Current-0.16875  

我应该如何解决?

大家好,

我有一个 xml 文件,其中包含曲线的电压和电流值。我想绘制这条曲线,使笛卡尔坐标中的电压为 X,电流为 Y。

我可以像下面的代码一样轻松地从 XML 文件中获取电压和电流值。但我想知道如何在一个干净的数组中返回这些值,以便以后轻松使用。

这是我的代码:

    public double[,] GetCurveDataForTestType()
    {
        List<double> voltage = new List<double>();
        List<double> current = new List<double>();

        XPathNodeIterator volt = nav.Select("some XPATH");
        XPathNodeIterator curr = nav.Select("some XPATH");

       foreach (XPathNavigator value in volt)
       {
           voltage.Add(Convert.ToDouble(value.Value));
       }

       foreach (XPathNavigator value in curr)
       {
           current.Add(Convert.ToDouble(value.Value));
       }

        return null; //How should I reurn a nice array to use for drawing a curve(Voltage as X and current as Y)
    }

【问题讨论】:

    标签: c# arrays list multidimensional-array


    【解决方案1】:

    这个怎么样...

       double[,] data = new double[voltage.Count(), 2];
        for (int i = 0; i < voltage.Count(); i++)
        {
            data[i, 0] = voltage[i];
            data[i, 1] = current[i];
        }
    

    【讨论】:

    • 谢谢,我会尝试并报告
    • 我尝试了这段代码,但在 foreach 循环中显示结果时遇到问题。你介意看看我的更新吗?
    【解决方案2】:

    它必须是一个实际的数组吗? .Union() 可以给你一个列表。如果你真的想的话,你可以使用 .Union.ToArray() 将它们投影到一个数组中。

    【讨论】:

    • 我实际上无法决定以何种形式在 XY 坐标上绘制曲线会更容易。这就是我需要帮助的原因。我只是希望以后在绘制曲线时可以轻松访问它。谢谢。
    【解决方案3】:

    List 基本上是数组,你可以通过 index [] 访问它,所以为什么不直接使用 List。您还可以省去铸造它的麻烦。

    【讨论】:

    • 谢谢,但我怎样才能用一个函数返回 2 个列表?
    • @Sean87 你可以返回一个元组,List>。 msdn.microsoft.com/en-us/library/system.tuple.aspx
    • 或者用两个列表创建类并返回它。那将是干净的设计。就我个人而言,我觉得 Tuple 有点脏。使您的代码难以阅读。
    • 确实如此。特别是在元组中的项目属于同一类型的情况下。
    【解决方案4】:

    要修复你的 foreach 循环,只需添加索引器

            foreach(double data in ztr.GetCurveDataForTestType())
            {
            richTextBox1.AppendText("Voltage" + data[0] + "    ---------    ");
            richTextBox1.AppendText("Current" + data[1] + "\r\n");
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2010-12-06
      • 2021-11-22
      • 1970-01-01
      • 2022-07-30
      • 2014-07-24
      • 2022-01-10
      相关资源
      最近更新 更多