Хранение дат, какая структура?C # - PullRequest
0 голосов
/ 01 сентября 2010

скажем, у меня есть список из 1000 случайных дат, назовите его L

Я не думаю, что в c # есть коллекция Tree, поэтому мне интересно, как реализовать следующее:

Дерево будет состоять из 3 этапов, первый этап содержит год, следующий этап содержит все месяцы в L в родительском году, а последний этап содержит все дни в «родительском» месяце и «дедушка и дедушка» 'год.

Какую коллекцию я должен использовать, или я мог бы просто использовать вложенный массив?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Я не тестировал код, но вы должны быть в состоянии сделать что-то вроде этого:

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 голосов
/ 01 сентября 2010

Как насчет

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

Но на самом деле, не зная, как вам это нужно, мы не можем помочь.Можете ли вы дать нам больше информации о том, почему вы хотите хранить даты таким образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...