存储日期,哪个结构? C#

时间:2010-09-01 10:49:33

标签: c# collections

说我有一个1000个随机日期的列表,称之为L

我不认为c#有一个'Tree'集合,所以我想知道如何实现以下内容:

树将深度为3个阶段,第一个阶段包含年份,下一个阶段包含父年中L的所有月份,最后阶段包含“父”月中的所有日期,以及'祖父母'年。

我应该使用什么样的集合,或者我可以使用嵌套数组?

2 个答案:

答案 0 :(得分:2)

我没有测试过代码,但你应该能够做到这样的事情:

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.");

答案 1 :(得分:0)

怎么样

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

但实际上,在不知道如何使用它的情况下,我们无法重新获得帮助。您能否以这种方式向我们提供有关您希望存储日期的更多信息?