none
Wie ich erhalte ich die Anzahl der Linien mit gleicher Länge aus einer Liste (mit LINQ)? RRS feed

  • Frage

  • Hallo,
    ich suche eine LINQ-Lösung für folgendes Problem:

    Grundlage bildet das Objekt Line, welches u.a. die Eigenschaften Length (Länge der Linie) und Angle (Winkel der Linie) besitzt.
    Weiterhin habe ich eine Liste vom Typ Line, in welcher sich vier Line-Objekte befinden.

    Im speziellen Fall will ich prüfen, ob die vier Linien einen Winkel von (0, 90, 180, 270) besitzen und in der zweiten Abfrage, ob diese
    zu einem Quadrat (alle Linien habe gleiche Länge) oder Rechteck (zwei Linien habe gleiche Länge) gehören.
    Dies möglichst mit LINQ, denn mit for-Schleifen funktioniert es, aber zu umständlich.

    Das Prüfen, ob die vier Linien einen Winkel von (0, 90, 180, 270) besitzen, habe ich wie unten gelöst und
    lasse mir die Anzahl der Seiten ausgeben (Zahl 4 bedeutet Quadrat oder Rechteck, Zahl 3 ...).


    ' objlines ist die Liste mit vier Linien

    Dim linesParallel As Integer = objlines.Where(Function(l) Math.Abs(l.Angle - 0) < 1.0 OrElse Math.Abs(l.Angle - 90) < 1.0 OrElse
                                                         Math.Abs(l.Angle - 180) < 1.0 OrElse Math.Abs(l.Angle - 270) < 1.0).Count


    Jetzt will ich anschließend nochmals die vier Linien (l.Length) in der Liste prüfen, ob zwei oder vier Seiten gleich lang sind bzw.
    wieviele Seiten sind gleich lang.
    Wäre schön, wenn jemand eine Lösung hätte.


    Alexander

    Freitag, 18. November 2011 15:39

Antworten

Alle Antworten