我有一个二维数组,其中包含 MyObj
类型的对象。
private MyObj[,] myObjs = new MyObj[maxX, maxY];
我想在传入匹配对象时从数组中获取索引。我想从此数组中获取 x 和 y 值。我可以将这两个值作为采用 x 和 y 坐标的 Position
对象返回。
private Position GetIndices(MyObj obj)
{
for (int x = 0; x < myObjs.GetLength(0); x++)
{
for (int y = 0; y < myObjs.GetLength(1); y++)
{
if (myObjs[x, y] == obj)
{
return new Position(x, y);
}
}
}
}
是否可以将此代码缩短为某些 Linq 代码行?
最佳答案
但我不认为,它看起来不错:)
var result = Enumerable.Range(0, myObjs.GetLength(0))
.Select(x => Enumerable.Range(0, myObjs.GetLength(1)).Select(y => new { x, y }))
.SelectMany(o => o)
.FirstOrDefault(o => myObjs[o.x, o.y] == obj);
关于c# - 将二维数组上的两个循环转换为 Linq 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50887566/