gpt4 book ai didi

c# - Lambda/LINQ 选择最小值

转载 作者:太空狗 更新时间:2023-10-29 22:22:39 24 4
gpt4 key购买 nike

我正在使用 .NET GeoCoordinate 类编写函数。我们有一个 Airport 类和一个 City 类,它们都定义了自己的 GeoCoordinate

我需要选择离城市最近的机场,我正在尝试使用 GetDistanceTo() 方法。

我现在看到的是这样的:

Airport a = Airports.GetAllActiveAirports().Min(this.Coordinates.GetDistanceTo(n.Profile.Coordinates));

按距离检索最近机场列表的另一个(有效)函数使用:

List<Airports> airports = Airports.GetAllActiveAirports();
var nearby =
from a in airports
where this.Coordinates.GetDistanceTo(a.Profile.Coordinates) > d
select a;
foreach(Airport a in nearby)
{
airports.Remove(a);
}

我见过使用 LINQ 和 lambda 在一行中执行此类操作的示例,但我不完全确定如何执行此操作...有任何指示吗?

最佳答案

如果我得到你的问题,这条线会得到从坐标到活跃机场的最小距离。

Airports.GetAllActiveAirports().Min(_ => Coordinates.GetDistanceTo(_.Profile.Coordinates))

如果您想要有问题的机场,那么:

var airports = Airports.GetAllActiveAirports();
var closest = airports.First(_ => Coordinates.GetDistanceTo(_.Profile.Coordinates) == airports.Min(_ => Coordinates.GetDistanceTo(_.Profile.Coordinates)))

您不必将其保持在一行中...Visual Studio 不会用完空间。

更好的选择是:

var airports = Airports.GetAllActiveAirports();
var minDistance = airports.Min(_ => Coordinates.GetDistanceTo(_.Profile.Coordinates))
var closest = airports.First(_ => Coordinates.GetDistanceTo(_.Profile.Coordinates) == minDistance)

关于c# - Lambda/LINQ 选择最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20865446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com