Ich habe eine Situation, in der ich einen sehr unnormierten Datensatz aus Excel geladen habe. Ich ziehe jede Reihe und erzeuge nacheinander die Objekte daraus. Jede Zeile könnte eine Firma und/oder einen Kunden enthalten.C# zwei Objekte zur Laufzeit zusammenführen
Mein Problem ist, dass mehrere Zeilen die gleichen Objekte haben könnten, also habe ich es vielleicht schon erstellt. Ich vergleiche, ob es schon in der Liste steht. Wenn dies der Fall ist, muss ich die beiden Objekte zusammenführen, um sicherzustellen, dass ich keine neuen Informationen aus der zweiten Zeile erhalten habe.
so:
company - client - address - phone
----------------------------------------
mycompany - - myaddress -
mycompnay - myclient - - myphone
so die erste Zeile würde ein Unternehmen Objekt mit der Adresse "meineadresse" erstellen. Die zweite Zeile würde ein anderes Firmenobjekt erstellen (das nach meinen Regeln dieselbe Firma ist wie der Name), dies hat auch eine Kundenreferenz und eine Telefonnummer.
So würde ich wissen, dass sie gleich sind, aber sicherstellen müssen, dass alle Daten in einem Objekt zusammengeführt werden.
Im Moment erstelle ich eine Utility-Klasse, die beide Objekte übernimmt (eines ist das Primäre und das andere ist verschmolzen, also hat es Priorität, wenn es einen Konflikt gibt), es durchläuft jede Variable und weist die Werte zu wenn es welche gibt. Dies ist ein bisschen Kesselplatte schwer und ich hatte gehofft, dass es einen Nutzen gibt, den ich verwenden könnte, um die manuelle Arbeit für mich zu machen.
Das Beispiel wurde vereinfacht, da es einige wenige andere Variablen gibt, einige grundlegende Typen und andere, die komplexere Elemente sind.
Sind Sie sicher, dass immer maximal 2 Objekte zusammengeführt werden müssen? Was passiert, wenn dieselbe Spalte/Eigenschaft zweimal definiert ist? Klingt gefährlich, nur um einen zu ignorieren !? – Achim
Sie durchlaufen meine Sammlungen in dem Moment, in dem ich in jedem gefundenen Match fusionieren würde. Theoretisch könnte es mehrere Übereinstimmungen durch die Sammlung geben, aber jede Zusammenführung würde einzeln durchgeführt werden. Wenn die Benutzer schlechte Daten eingegeben haben, so dass ich wegen mehrerer Felder einen gewissen Wert verlieren muss, kann ich sowieso nicht sehen. – Jon