Enr*_*ent 4 c# linq arrays multidimensional-array
我有以下课程
class Tile
{
public int height;
public int terrain;
}
Run Code Online (Sandbox Code Playgroud)
我有一个2D数组的Tiles
Tile[,] area = new Tile[5,5];
Run Code Online (Sandbox Code Playgroud)
如何将我的区域从a映射Tile[,]到a int[,],只保存高度?
我试过这样做:
area.Select(tile => tile.height)
Run Code Online (Sandbox Code Playgroud)
但显然C#多维数组并没有实现IEnumerable.
我怎么能解决这个问题?
我怎么能解决这个问题?
通过编写代码.没有"选择"可行,所以自己制作:
static class Extensions
{
public static R[,] Select<T, R>(this T[,] items, Func<T, R> f)
{
int d0 = items.GetLength(0);
int d1 = items.GetLength(1);
R[,] result = new R[d0, d1];
for (int i0 = 0; i0 < d0; i0 += 1)
for (int i1 = 0; i1 < d1; i1 += 1)
result[i0, i1] = f(items[i0, i1]);
return result;
}
Run Code Online (Sandbox Code Playgroud)
现在你有了你想要的扩展方法.
练习: