TL hinzugefügt oder entfernt Element finden) und sagen, welches Element geändert wird, während alle anderen Elemente übereinstimmen?Vergleicht man zwei Listen in einer von ihnen
Meine Klasse haben eine List<View>
Eigenschaft, die von einem List<Model>
über Konstruktor injiziert erstellt wird. Jede View
umschließt ihre jeweilige Model
als öffentliches Eigentum.
im gleichen Bereich, gibt es eine void Update(List<Model> newList)
Routine, die eine weitere Liste von Model
mit der folgenden Bedingung erhält: Es ist das gleiche wie vorher ist List<Model>
, plus oder minus genau ein Element. Das liegt daran, dass Update
jedes Mal aufgerufen wird, wenn ein Element an anderer Stelle einer datengebundenen Liste hinzugefügt oder daraus entfernt wird, und die Anwendung nur die Option zum Hinzufügen/Entfernen eines Elements auf einmal hat.
Die Motivation für den Update
Betrieb, anstatt einfach die Modelle zu ersetzen (in Ansichten gewickelt) der alten Liste mit neuem, ist, dass View
Klassen Speicher Zustand, so will ich ihr Modell ersetzen, sondern behalten ihre Zustand - der sowieso nicht in den Modellen gespeichert ist.
Das Problem ist: Ich muss neue Ansicht hinzufügen, wenn es ein neues Modell gibt, muss ich die jeweilige Ansicht entfernen, wenn das entsprechende Modell abwesend ist, und ich muss bereits vorhandene Ansichten mit ihren bereits vorhandenen Modellen, außer für das Element hinzugefügt oder entfernt. Ich bin mir nicht sicher, wie ich das machen soll.
Also habe ich darüber nachgedacht, das Modell im ersten Element der Liste mit dem ersten Element der neuen Liste zu vergleichen, und wenn sie übereinstimmen, dann gehe zum zweiten Element und so weiter. An einem Punkt werden sie sich unterscheiden, aber dies kann wegen der Hinzufügung eines Elements sein (und dann wird der Rest um einen Index verschoben), oder wegen der Entfernung eines Elements (in diesem Fall wird der Rest nach unten verschoben und das andere Element wird tatsächlich ein bereits vorhandenes Element in der Liste sein).
Gibt es eine vernünftige Möglichkeit festzustellen, ob das erste andere Element durch Hinzufügen oder Entfernen verursacht wird?
, wie Sie vergleichen Ansichten mit Modellen? –
Wenn vielleicht zuviel des Guten sein, aber Sie können versuchen, mit https://github.com/GregFinzer/Compare-Net-Objects –
Klingt wie, was Sie das Gegenteil eines Intersect wollen, ist (scheinbar eine symmetrische Differenz genannt), beschrieben [hier] (http://stackoverflow.com/questions/5620266/the-opposite-of-intersect). Der Weg zu wissen, ob etwas eine Ergänzung oder Entfernung ist, ist herauszufinden, zu welcher der beiden Listen das unterschiedliche Modell gehört. Wenn es Teil des "Vorher" aber nicht des "Nachher" war, wurde es entfernt. Wenn es Teil des "Nachher" aber nicht des "Vorher" ist, wurde es hinzugefügt. –