0

double[,] を返す関数があります。これをループして結果を収集する必要があります。常に 2 列のみが返されることはわかっていますが、関数が返す行数はわかりません。

結果を収集する最良の方法は何ですか?

addrange を使用しようとしましたが、double[,] では使用できないようです。

コード内:

public static double[,] downloadtable(double start, double end, string url)
{
    DateTime t1 = DateTime.FromOADate(start);
    DateTime t2 = DateTime.FromOADate(end);
    var datediff = Convert.ToInt32((t2 - t1).TotalDays) + 1;
    var reslist = new List<double[,]>();

    for (int i = 0; i < datediff; i++)
    {
         double[,] temp = somefunction(start+i,url);
         reslist.AddRange(temp);
    }
}

不明な長さの結果を収集し、再度 double[,] を返す最良の方法は何ですか?

更新- これはかなりばかげた質問でした。とにかく、ここに実用的な解決策があります。誰かが sth についてもっとよく考えることができる場合は、私に知らせてください。

        public static double[,] downloadtable(double start, double end, string url)
           {
        DateTime t1 = DateTime.FromOADate(start);
        DateTime t2 = DateTime.FromOADate(end);
        var datediff = Convert.ToInt32((t2 - t1).TotalDays) + 1;
        var reslist = new List<double[,]>();

        Parallel.For(0, datediff, i =>
        {
            var temp = downloadone(start + i, url);
            reslist.Add(temp);
        });

        var cnt = reslist.Count;
        var cnt2 = new int[cnt];

        for (int i = 0; i < cnt; i++)
        {
            cnt2[i]= reslist[i].GetLength(0);
        }

        var res = new double[cnt2.Sum(), 2];
        var acc = 0;

        for (int j = 0; j < cnt; j++)
        {
            for (int i = 0; i < cnt2[j]; i++)
            {
                res[acc, 0] = reslist[j][i, 0];
                res[acc, 1] = reslist[j][i, 1];
                acc++;
            }
        }
        return res;

    }
4

0 に答える 0