我宣佈一個3×3矩陣C#LINQ無法枚舉矩陣
int[,] matrix=new int[3,3]
{
{1,2,3},
{4,5,6},
{11,34,56}
};
當我試圖枚舉它像
var diagonal = matrix.AsQueryable().Select();
我unbale將其轉換爲可枚舉collection.How做那?
我宣佈一個3×3矩陣C#LINQ無法枚舉矩陣
int[,] matrix=new int[3,3]
{
{1,2,3},
{4,5,6},
{11,34,56}
};
當我試圖枚舉它像
var diagonal = matrix.AsQueryable().Select();
我unbale將其轉換爲可枚舉collection.How做那?
矩形陣列不實現通用IEnumerable<T>
類型,因此您需要致電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);
}
}
}
輸出:當施加到陣列
1
4
9
16
25
36
121
1156
3136
AsQueryable()
是無意義的。 Select
沒有參數沒有過載。
matrix
(多維數組)是IEnumerable
本身。如果你想查詢它,你需要使用matrix.Cast<int>()
將它轉換爲IEnumerable<int>
,它將產生1,2,3,4,5,6,11 ......
如果你想在Linqish中獲得對角線你應該這樣做:
var diagonal = Enumerable.Range(0, matrix.GetLength(0)).Select(i => matrix[i, i]);
非常感謝Jon – amit 2010-08-31 08:44:37