C#LINQ无法枚举矩阵
我声明了一个3x3矩阵C#LINQ无法枚举矩阵,c#,asp.net,linq,C#,Asp.net,Linq,我声明了一个3x3矩阵 int[,] matrix=new int[3,3] { {1,2,3}, {4,5,6}, {11,34,56} }; 当我试图列举它的时候 var diagonal = matrix.AsQueryable().Select(); 我无法将其转换为可枚举集合。如何做?矩形数组不实现泛型IE
int[,] matrix=new int[3,3]
{
{1,2,3},
{4,5,6},
{11,34,56}
};
当我试图列举它的时候
var diagonal = matrix.AsQueryable().Select();
我无法将其转换为可枚举集合。如何做?矩形数组不实现泛型
IEnumerable
类型,因此需要调用Cast
。例如:
using System;
using System.Collections.Generic;
using System.Linq;
class Test
{
static void Main()
{
int[,] matrix=new int[3,3]
{
{1,2,3},
{4,5,6},
{11,34,56}
};
IEnumerable<int> values = matrix.Cast<int>()
.Select(x => x * x);
foreach (int x in values)
{
Console.WriteLine(x);
}
}
}
AsQueryable()
应用于数组时没有意义<代码>选择没有无参数的重载
矩阵
(多维数组)本身就是IEnumerable
。如果要查询它,需要使用matrix.cast()
将其转换为IEnumerable
,它将生成1、2、3、4、5、6、11的序列
如果你想以Linqish的方式获得对角线,你应该:
var diagonal = Enumerable.Range(0, matrix.GetLength(0)).Select(i => matrix[i, i]);
var diagonal = Enumerable.Range(0, matrix.GetLength(0)).Select(i => matrix[i, i]);