2010-09-01 7 views
0

Dire que j'ai une liste de 1000 dates aléatoires, appelez-LDates de stockage, quelle structure? C#

Je ne pense pas que C# a une collection 'Tree', donc Im se demander comment appliquer les mesures suivantes:

L'arbre sera 3 étapes en profondeur, la première étape contient l'année, la suivante contient tous les mois en L dans l'année parentale, et la dernière étape contient tous les jours du mois «parent» et de l'année «grand-parent».

Quel type de collection dois-je utiliser, ou simplement utiliser un tableau imbriqué?

+0

pourquoi ne pas utiliser une liste '' ? – knittl

+0

Considérez bibliothèque C5 .net http://www.itu.dk/research/c5/ – kenny

+4

Quel type de collection dont vous aurez besoin dépend de ce que vous voulez faire avec ces dates. – LukeH

Répondre

2

Je n'ai pas testé le code, mais vous devriez être en mesure de faire quelque chose comme ceci:

class Container 
{ 
    public Container() { Items = new Dictionary<int, Container>(); } 
    public DateTime DateTime {get;set;} 
    Dictionary<int, Container> Items {get;set;} 
} 

Dictionary<int, Container> items = new Dictionary<int, Container>(); 

foreach (var date in theListCalledL) 
{ 
    Container yearContainer; 
    if (!items.TryGetValue(date.Year, out yearContainer)) 
    { 
     yearContainer = new Contanier{DateTime = date}; 
     items.Add(date.Year, yearContainer); 
    } 

    Container monthContainer; 
    if (!yearContainer.Items.TryGetValue(date.Month, out monthContainer)) 
    { 
     monthContainer = new Contanier{DateTime = date}; 
     yearContainer.Add(date.Month, monthContainer); 
    } 

    Container dayContainer; 
    if (!monthContainer.Items.TryGetValue(date.Day, out dayContainer)) 
    { 
     dayContainer = new Contanier{DateTime = date}; 
     monthContainer.Add(date.Day, dayContainer); 
    } 
} 

//and to get items: 
var container = items[1997][8][10]; 
Console.WriteLine("The date was: " + contanier.DateTime); 

var tmp = items[1997]; 
Console.WriteLine("1997 has items for " + tmp.Items.Count + " months."); 
0

Que diriez-vous

Dictionary<int, Dictionary<int, HashSet<int>>> dateTree; 

Mais vraiment, avec à savoir comment vous avez besoin de l'utiliser, nous ne pouvons pas reall aide. Pouvez-vous nous donner plus d'informations sur les raisons pour lesquelles vous souhaitez stocker les dates de cette façon?