Laden...

Welche Collection für die Verbindung von 2 großen Datenmengen?

Erstellt von Bunnychecker vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.569 Views
B
Bunnychecker Themenstarter:in
224 Beiträge seit 2009
vor 11 Jahren
Welche Collection für die Verbindung von 2 großen Datenmengen?

Hi.

Ich habe 2 große Datenmengen von Objekten (jeweils >50000). Datenmenge1 sind Adressen. Datenmenge2 sind Accounts. Jeder Account und jede Adresse ist einzigartig (unique). Jede Adresse ist einer Liste von Accounts zugeordnet bzw. jeder Account ist einer Menge von Adressen zugeordnet.
Zugegriffen wird öfters mittels Account, daher bin ich bisher mit

Dictionary<Account, List<Address>> Dictionary

ganz gut zurecht gekommen und habe mir mittels Linq die Accounts geholt, wenn ich per Adresse zugreifen wollte. Aber ich könnte mir gut vorstellen, dass so eine Linqabfrage einiges an Zeit benötigt, wenn die Datenmengen größer werden.

Gibt es gute Alternative? Ich habe mir überlegt eine eigene Klasse zu schreiben in der ich eine List<Account> und eine List<Address> halte und dann über ein Dictionary beide miteinander verbinde, aber vollständig zuende gedacht habe ich dabei noch nicht.

Liebe Grüße

C
2.121 Beiträge seit 2010
vor 11 Jahren

Es spricht nichts gegen ein Dictionary mit Adresse und eins mit Account als Key. Du musst dabei nur schauen dass die auch wirklich immer alle aktualisiert werden, damit sie nicht inkonsistent werden.

16.827 Beiträge seit 2008
vor 11 Jahren

Gegenüber LINQ und Geschwindigkeit gibts im optimalen Fall keine Alternativen, wobei der Zugriff über den Key direkt nachvollziehbarerweise natürlich schneller ist, als zu suchen.

Aber warum hat der Account die Adressen nicht einfach direkt als Eigenschaft?

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Bunnychecker,

Es spricht nichts gegen ein Dictionary mit Adresse und eins mit Account als Key. Du musst dabei nur schauen dass die auch wirklich immer alle aktualisiert werden, damit sie nicht inkonsistent werden.

... weshalb man die beiden Dictionaries am besten in einer eigenen Klasse kapselt und die Zugriffe nur über diese neue Klasse durchführt. Solange sowohl die Keys als auch die Values eindeutig sind, könnte man sogar eine generelle Klasse BidirectionalDictionary schreiben.

herbivore

B
Bunnychecker Themenstarter:in
224 Beiträge seit 2009
vor 11 Jahren

Aber warum hat der Account die Adressen nicht einfach direkt als Eigenschaft?

Das ist eine gute Frage, die ich selbst erstmal durchdenken musste und ich glaube, dass macht auch mehr Sinn.

Danke für alle Hinweise.