我需要用一些来自IEnumerable的值填充二维数组。
public void ReturnJson(IEnumerable<Domain.Revenue.Revenue> listRevenues)
{
double[,] dateYearActual;
foreach (var variable in listRevenues)
{
dateYearActual= new double[,]
{
{CalculateMiliseconds(variable.DateHourInsertData), variable.Value}
};
}
// ...
}
我不知道,但我认为存在更好的方法来做到这一点,并且在var data1
我有以下错误variable dateYearActual might not be initialized before accessing.
更好的方法是使用来自IEnumerable的值填充二维数组?
答案 0 :(得分:0)
您可以尝试这样的事情:
var values = listRevenues
.Select(x => new
{
Seconds = CalculateMiliseconds(x.DateHourInsertData),
Value = x.Value
}).ToList();
double[,] dateYearActual = new double[values.Count,2];
for(int i=0; i<values.Count; i++)
{
dateYearActual[i,0] = values[i].Seconds;
dateYearActual[i,1] = values[i].Value;
}
执行投影并将值放入List
以避免多次枚举。然后使用值Count
作为行计数创建数组,并使用for循环将每个元素设置为相应的值。
答案 1 :(得分:0)
您看到的错误是由于可能跳过foreach
循环,然后当您尝试在代码末尾访问dateYearActual
时未经初始化(即您从未为其分配过值)。要修复该错误,您可以更改
double[,] dateYearActual;
到
double[,] dateYearActual = new double[listRevenues.Length, 2];
您的代码的另一个问题是,当您拨打此电话时,您正在重新创建dateYearActual
:dateYearActual= new double[,] ...
。相反,您需要使用索引for
循环而不是foreach
:
for (int i =0; i<listRevenues.Length]; i++)
{
listRevenues[i,0] = CalculateMiliseconds(variable.DateHourInsertData);
listRevenues[i,1] = variable.Value;
}