【发布时间】:2015-01-28 02:40:05
【问题描述】:
如何正确使用以下 LINQ 查询?我想创建一个只包含大于 5 的值的一维数组。我不明白为什么它不能迭代这个多维数组,但如果我使用 foreach,它实际上会迭代。
// Create an multidimensional array, then just put numbers into it and print the array.
int[,] myArr = new int[5,6];
int rows = myArr.GetLength(0);
int cols = myArr.GetLength(1);
for (int i = 0; i < rows; i++)
{
for (int k = 0; k < cols; k++)
{
myArr[i,k] = i + k;
Console.Write(myArr[i,k]);
}
Console.WriteLine("");
}
var highList = from val in myArr where (val > 5) select val;
错误是:
找不到源类型“
int[*,*]”的查询模式的实现。 'Where' 未找到。您是否缺少“System.Linq”的引用或使用指令?
我认为这可能会解决问题:
public static IEnumerator<int> GetEnumerator(int[,] arr)
{
foreach(int i in arr)
{
yield return i;
}
}
但它没有实现迭代器。
【问题讨论】:
标签: c# arrays linq multidimensional-array