public static void Main(string[] args)
{
var area = new Tile[5, 5];
for (var j = 0; j < 5; j++)
for (var i = 0; i < 5; i++)
area[i, j] = new Tile() { height = (j + 1) * (i + 1), terrain = 99 };
您的链接:
// this copies the data over from your area-array into a new int[5,5] array using
// IEnumerable.Aggregate(...) with an emtpy seeded int[5,5] array and
// leverages Enumerable.Range() with integer division + modular to get
// the indices right
var onlyHeights = Enumerable
.Range(0, 25)
.Aggregate(new int[5, 5], (acc, i) =>
{
acc[i / 5, i % 5] = area[i / 5, i % 5].height;
return acc;
});
测试项目:
for (var j = 0; j < 5; j++)
for (var i = 0; i < 5; i++)
Console.WriteLine($"area.height {area[i, j].height} => {onlyHeights[i, j]}");
Console.ReadLine();
}
4条答案
按热度按时间hl0ma9xz1#
我该如何解决这个问题?
通过 * 编写代码 *。没有“选择”功能,因此请自行创建:
现在您已经有了想要的扩展方法。
练习:
k7fdbhmy2#
由于没有现成的方法来完成此操作,您可以尝试此处建议的解决方法:
摘自原帖,所有功劳归原帖:Enumerating on Multi-dimentional arrays
8e2ybdfx3#
如果你真的,真的,真的想,你可以这样做:
您的链接:
测试项目:
输出量:
但那只是一些伪装的嵌套
for's
。23c0lvtd4#
And if you want a more generic LINQ-like method accepting higher dimensional arrays.
Which you can call like.