【发布时间】:2020-08-11 23:00:58
【问题描述】:
我有一本字典,我试图在其中查找特定类值的最大值,类似于获取列表的最大值。我已经搜索了几个小时,但我发现的只是如何从具有键和单个值的字典中获取值。我也遇到过 Linq,但我没有找到任何关于如何在字典的类值中搜索 Max 值的信息。我很确定有办法,但我只是错过了什么?
就我而言,我正在尝试找到我班级 LineInfo 的 Max lineDistance
我找到的链接很接近
this one 但它只处理一个键和一个值,而不是一个类
this one 似乎它可能在正确的轨道上,但检查的答案建议运行嵌套的 foreach。我想有一个更简单/更复杂的方法吗?
感谢任何和所有的帮助。
这是我的代码,相当简单:
class LineInfo
{
public double lineDistance { get; set; }
public LineSegment2d lineSegment2D1 { get; set; }
public LineSegment2d lineSegment2D2 { get; set; }
}
var lines = new Dictionary<int, LineInfo>();
double pointDistance0 = lineSegment2DList[i].StartPoint.GetDistanceTo(lineSegment2DList[j].StartPoint);
lines.Add(0, new LineInfo {lineDistance = pointDistance0, lineSegment2D1 = lineSegment2DList[i], lineSegment2D2 = lineSegment2DList[j] });
double pointDistance1 = lineSegment2DList[i].StartPoint.GetDistanceTo(lineSegment2DList[j].EndPoint);
lines.Add(1, new LineInfo { lineDistance = pointDistance1, lineSegment2D1 = lineSegment2DList[i], lineSegment2D2 = lineSegment2DList[j] });
double pointDistance2 = lineSegment2DList[i].EndPoint.GetDistanceTo(lineSegment2DList[j].StartPoint);
lines.Add(2, new LineInfo { lineDistance = pointDistance2, lineSegment2D1 = lineSegment2DList[i], lineSegment2D2 = lineSegment2DList[j] });
double pointDistance3 = lineSegment2DList[i].EndPoint.GetDistanceTo(lineSegment2DList[j].EndPoint);
lines.Add(3, new LineInfo { lineDistance = pointDistance3, lineSegment2D1 = lineSegment2DList[i], lineSegment2D2 = lineSegment2DList[j] });
【问题讨论】:
-
所以您只想要字典中
lineDistance最大的LineInfo?var result = lines.Values.OrderByDescending(line => line.lineDistance).First(); -
为什么这些东西存储在字典中?一个数组就足够了?
-
@itsme86 如果你想发表你的评论作为答案,我会检查它,因为你是第一个。
-
MoreLinq 的
MaxBy可能是您想要的。
标签: c# linq dictionary