如何从.min扩展方法中获取对象
本文关键字:获取 取对象 方法 扩展 min | 更新日期: 2023-09-27 18:04:18
我有一个简单的结构体:
public struct Coord
{
public Coord (int Row, int Column )
{ /* set values */ }
public int Row { get; }
public int Column { get; }
}
给定:
int [ , ] myArray;
IEnumerable<Coord> myCoords;
我想选择具有最小值的坐标并返回该坐标。我可以得到最小的值:
int val = myCoords.Min(c => myArray[c.Row, c.Col]);
我怎样才能得到'Coord'代替返回?
不幸的是,在普通的LINQ to Objects中不能很容易地做到这一点。你可以找到最小值,然后,然后找到具有该值的Coord
,但显然这意味着要遍历两次数据。
我在MoreLINQ中有一个MinBy
方法,您可以使用:
Coord minCoord = myCoords.MinBy(c => myArray[c.Row, c.Col]);
另一个不太优雅的答案:
coords.Single( x => array[x.Row, x.Col] == coords.Min(y => array[y.Row,y.Col]));