Ich habe eine Liste von Objekten, die geordnet sind. Ich möchte redundante Objekte entfernen, bei denen Redundanz nicht unbedingt Duplikat bedeutet. Hier ein Beispiel:Gibt es eine Möglichkeit, bestimmte Elemente aus einer Liste <T> mit LINQ zu entfernen?
List<Point> points = new List<Point>
{
new Point(0, 10),
new Point(1, 12),
new Point(2, 16),
new Point(3, 16),
new Point(4, 16),
new Point(5, 13),
new Point(6, 16),
};
Ich interessiere mich für das Entfernen der new Point(3, 16)
Eintrag, weil es nicht sinnvoll, Informationen liefert; Ich weiß bereits, dass das Element bei 2 = 16 und das Element bei 4 = 16 ist. Die Information, dass 3 = 16 mir in meiner Anwendung nicht gut tut (weil ich bereits die Grenzen {2,4} = 16) habe, möchte ich diesen Eintrag entfernen. Ich möchte auch nicht, dass ich den 5. und 6. Eintrag behalten möchte, da es keine aufeinanderfolgenden Einträge gibt, bei denen Y = 16 ist.
Gibt es einen glatten Weg, dies mit Linq zu tun?
How do you "redundant" Daten bestimmen? Ist dies in Form einer Funktion der Form f = y (x)? Sie scheinen willkürlich einen Datenpunkt zu entfernen. Wenn Ihre Funktion stückweise linear zwischen zwei Punkten 'a, b' und' f (a) = f (b) 'ist, können Sie sie entfernen. Aber Sie scheinen keine Rechtfertigung dafür zu geben, dies zu beseitigen. –
Ja. Wenn ich mehrere aufeinanderfolgende Punkte habe, die eine stückweise horizontale Linie bestimmen, möchte ich die inneren Punkte entfernen und die Endpunkte einfach belassen. – Mark
@MikeBantegui - Ich denke, die Probe + Text Erklärung sind klar genug. Obwohl einige Erläuterungen zu vertikalen und vor allem diagonalen Segmenten hilfreich wären. –