一尘不染

将Linq与2D阵列一起使用时,找不到选择

c#

我想使用Linq查询2D数组,但出现错误:

找不到源类型为’SimpleGame.ILandscape [ ]’ 的查询模式的实现。找不到“选择”。您是否缺少对“
System.Core.dll”的引用或对“ System.Linq”的using指令?

代码如下:

var doors = from landscape in this.map select landscape;

我检查了是否包含参考资料System.Core并使用System.Linq

谁能给出一些可能的原因?


阅读 268

收藏
2020-05-19

共1个答案

一尘不染

为了将多维数组与LINQ一起使用,您只需要将其转换为IEnumerable<T>。这很简单,这是两个示例查询选项

int[,] array = { { 1, 2 }, { 3, 4 } };

var query = from int item in array
            where item % 2 == 0
            select item;

var query2 = from item in array.Cast<int>()
                where item % 2 == 0
                select item;

每种语法都会将2D数组转换为IEnumerable<T>(因为您int item在一个from子句中或array.Cast<int>()在另一个子句中说了)。然后,您可以使用LINQ方法过滤,选择或执行所需的任何投影。

2020-05-19