Lambda/LINQ Wählen Sie Mindestens
Schreibe ich eine Funktion mit der .NET GeoCoordinate
Klasse. Wir haben eine Airport
Klasse und ein City
- Klasse, die beide definieren Ihre eigenen GeoCoordinate
.
Brauche ich, um wählen Sie die nächstgelegene airport relativ zu der Stadt, und ich bin versucht, dies zu tun mit der GetDistanceTo()
Methode.
Was ich jetzt haben, sieht wie folgt aus:
Airport a = Airports.GetAllActiveAirports().Min(this.Coordinates.GetDistanceTo(n.Profile.Coordinates));
Anderen (Arbeits -) Funktion ruft eine Liste der nächstgelegenen Flughäfen, die von Distanz verwendet:
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);
}
Habe ich gesehen, Beispiele, Dinge zu tun, wie dies in einer einzigen Zeile, die mit LINQ & Lambda-Ausdrücke, aber ich bin mir nicht ganz sicher, wie Sie Sie ausführen diese...irgendwelche Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich auf Ihre Frage, diese Zeile wird die minimale Distanz aus Koordinaten zu einem aktiven Flughafen.
Wenn Sie wollen, dass der Flughafen in Frage:
Sie nicht haben, um halten Sie es in einer Zeile... von Visual Studio nicht aus dem Raum laufen.
Sogar eine noch bessere option, ohne immer das minimum in jeder iteration werden würde:
City
Objekt, obwohl die glaube ich stolpern mich.GetDistanceTo
ist gleich dem Min, und die Rücksendung des Objekts, wenn es ist?minDistance
vorclosest
Abfrage. So macht das am meisten2*n
GetDistanceTo()
Anrufe, wenn das mitMin
innenFirst
kann bis zun*(n+1)
ruft!Die akzeptierte Antwort, die bewirkt, dass 2 Aufrufe
GetDistance
für jeden Flughafen. Hier ist, wie Sie es tun können in einem Arbeitsgang:Min wirft einen
InvalidOperationException
wenn es keine Werte. Sie könnten versuchen, so etwas wie dieses. Wenn keine gefunden wurden, am nächsten null:Airport
implementiertIEnumerable<Something>
.