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
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.
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?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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.