Entwickler-Ecke

C# - Die Sprache - dictionary in einem dictionary


mike3000 - Do 01.01.09 18:55
Titel: dictionary in einem dictionary
Hi,

Ich bin neu in C# und habe eine kurze Frage zu einem hoffentlich kleinen Problem.

In meinem C# Progrämmchen benötige ich eine einfache Methode um auf Kunden zugreifen zu können, z.B. so:

allCustomers[44][Name] -> gibt mir den Namen des Kunden mit der Kunden-Nr. 44
allCustomers[30][Age] -> gibt mir das Alter des Kunde mit der Kunden-Nr. 30

Diese Zugriffsmethode habe ich mit verschachtelten Dictionaries gelöst:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
int customerNo  = 44;
string name     = "Gates";
string prename  = "Bill";
int age         = 30;
float revenue   = 234.234F;

Dictionary<int, Dictionary<stringstring>> allCustomers = new Dictionary<int, Dictionary<stringstring>>();
Dictionary<stringstring> customer = new Dictionary<stringstring>();

allCustomers.Add(CustomerNo, customer.Add("Name", name);
allCustomers.Add(CustomerNo, customer.Add("Prename ", prename );
allCustomers.Add(CustomerNo, customer.Add("Age", age.ToString());
allCustomers.Add(CustomerNo, customer.Add("Revenue ", revenueToString());

Das Problem ist nun, dass ich numerische Variablen wie "Age" oder "Revenue" jedesmall in einen String und zurück konvertieren muss.

Frage: Gibt es für eine solches Szenario eine bessere Lösung ?

Für jeden Hinweis bin ich sehr dankbar.

mike

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet.


jaenicke - Do 01.01.09 19:08

Hallo und :welcome: hier im Forum!

Ich kenne Dictionary nicht, deshalb kann ich dazu nichts sagen, aber ich würde einfach dies verwenden:
http://msdn.microsoft.com/de-de/library/0taef578(VS.80).aspx
In Verbindung mit einer List mit dem entsprechenden Typ sollte das sein, was du brauchst.
http://msdn.microsoft.com/de-de/library/6sh2ey19(VS.80).aspx


Kha - Do 01.01.09 21:00

Zitat:
allCustomers[44][Name]
Welchen Vorteil versprichst du dir davon? Normalerweise benutzt man dafür eine List<T> einer eigenen Customer-Klasse, womit der Zugriff so aussieht:

C#-Quelltext
1:
allCustomers[44].Name                    

Was jaenicke eigentlich schon gesagt hat, nur:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich kenne Dictionary nicht, deshalb kann ich dazu nichts sagen, aber ich würde einfach dies verwenden:
http://msdn.microsoft.com/de-de/library/0taef578(VS.80).aspx
Structs machen hier keinen Sinn, da sollte schon eine Klasse her.


mike3000 - Do 01.01.09 21:33

Kha, jaenicke: Vielen herzlichen Dank für die rasche Antwort :D

Hab nun eine Customer-Klasse erstellt. Die Customer-Objekte versorge ich nun einfach in einem Dictionary mit CustomerNo als Key, das funktioniert prima (mit Linq2SQL bräuchte ich sogar nicht mal mehr eine eigene Customer-Klasse)

wirklich cool ! :D

danke
mike