gpt4 book ai didi

linq - 通过 LINQ 生成二维数组

转载 作者:行者123 更新时间:2023-12-03 23:43:28 25 4
gpt4 key购买 nike

我正在尝试创建一个 double 矩阵,表示实体之间的相关性。

这是我通过 LINQ 的方式

double[][] correlationsRaw = (from e in entitiesInOrder
select
(from f in entitiesInOrder
select correlations.GetCorrelation(e, f)
).ToArray()).ToArray();

这很好用。

但我想要的是一个二维数组(double[,]),而不是一个锯齿状的数组。

显然,我可以编写一些嵌套的 for 循环来将一个转换为另一个。

但是我可以在这里使用一些优雅的 LINQ 技巧吗?

最佳答案

我不认为有一种直接从 Linq 查询返回多维数组的简单方法……但是您可以创建一个函数,该函数接受一个锯齿状数组并返回一个多维数组:

public T[,] JaggedToMultidimensional<T>(T[][] jaggedArray)
{
int rows = jaggedArray.Length;
int cols = jaggedArray.Max(subArray => subArray.Length);
T[,] array = new T[rows, cols];
for(int i = 0; i < rows; i++)
{
cols = jaggedArray[i].Length;
for(int j = 0; j < cols; j++)
{
array[i, j] = jaggedArray[i][j];
}
}
return array;
}

顺便说一句,它可能是一个扩展方法,允许您在 Linq 查询中使用它...

关于linq - 通过 LINQ 生成二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com