我有一个返回双[,]的函数。我需要循环并收集结果。我知道它总是只返回 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[,] 的最佳方法是什么?
更新- 这是一个非常愚蠢的问题,无论如何这里都是可行的解决方案。如果有人能想到更好的东西,请告诉我。
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;
}