C# 将LINQ返回值转换为2D数组
实际上,我正在使用两个二维阵列: 矩阵加法(int[]a,int[]b) 使用LINQ添加两个矩阵并将它们返回到2D数组格式C# 将LINQ返回值转换为2D数组,c#,arrays,linq,matrix,C#,Arrays,Linq,Matrix,实际上,我正在使用两个二维阵列: 矩阵加法(int[]a,int[]b) 使用LINQ添加两个矩阵并将它们返回到2D数组格式int[][]。LINQ结果正常,返回了预期结果,但无法帮助自己以int[]格式返回结果 矩阵加法() 错误:System.InvalidCastException:“无法将类型为“d_u52[System.Int32[],System.Collections.Generic.IEnumerable1[System.Int32]]]”的对象强制转换为类型为“System.I
int[][]
。LINQ结果正常,返回了预期结果,但无法帮助自己以int[]格式返回结果
矩阵加法()
错误:System.InvalidCastException:“无法将类型为“d_u5
2[System.Int32[],System.Collections.Generic.IEnumerable
1[System.Int32]]]”的对象强制转换为类型为“System.Int32[]”。如果没有强制转换,当前代码将返回嵌套在另一个可枚举对象中的可枚举项。您需要将内部可枚举项和外部可枚举项都转换为int[]
,并删除强制转换:
return a.Select(
(x, i) => x.Select((y, j) => a[i][j] + b[i][j]).ToArray()
).ToArray();
不能直接将可枚举项强制转换为二维交错数组:
return Enumerable.Range(0, a.GetLength(0))
.Select(i => Enumerable.Range(0, a.GetLength(1))
.Select(j => a[i][j] + b[i][j])
.ToArray()
).ToArray();
return Enumerable.Range(0, a.GetLength(0))
.Select(i => Enumerable.Range(0, a.GetLength(1))
.Select(j => a[i][j] + b[i][j])
.ToArray()
).ToArray();