存储日期,哪种结构?c#

存储日期,哪种结构?c#,c#,collections,C#,Collections,假设我有一个1000个随机日期的列表,称之为L 我认为c#没有“树”集合,因此我想知道如何实现以下内容: 树将有3个阶段,第一阶段包含年份,下一阶段包含父年L中的所有月份,最后一阶段包含“父”月和“祖父母”年中的所有天数 我应该使用哪种类型的集合,或者我可以只使用嵌套数组?怎么样 Dictionary<int, Dictionary<int, HashSet<int>>> dateTree; 字典数据树; 但事实上,如果你不知道如何使用它,我们真的帮不了你

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

我认为c#没有“树”集合,因此我想知道如何实现以下内容:

树将有3个阶段,第一阶段包含年份,下一阶段包含父年
L
中的所有月份,最后一阶段包含“父”月和“祖父母”年中的所有天数

我应该使用哪种类型的集合,或者我可以只使用嵌套数组?

怎么样

Dictionary<int, Dictionary<int, HashSet<int>>> dateTree;
字典数据树;

但事实上,如果你不知道如何使用它,我们真的帮不了你。你能告诉我们为什么要用这种方式存储日期的更多信息吗?

我还没有测试代码,但你应该可以这样做:

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.");
类容器
{
公共容器(){Items=new Dictionary();}
公共日期时间日期时间{get;set;}
字典项{get;set;}
}
字典项=新字典();
foreach(列表中的var日期)
{
集装箱;集装箱;
如果(!items.TryGetValue(date.Year,out yearContainer))
{
yearContainer=newcontanier{DateTime=date};
项目。添加(日期。年份,年份容器);
}
集装箱月台集装箱;
if(!yearContainer.Items.TryGetValue(date.Month,out monthContainer))
{
monthContainer=newcontanier{DateTime=date};
yearContainer.Add(date.Month,monthContainer);
}
集装箱日集装箱;
if(!monthContainer.Items.TryGetValue(date.Day,out dayContainer))
{
dayContainer=newcontanier{DateTime=date};
monthContainer.Add(date.Day,dayContainer);
}
}
//和获取项目:
var容器=项目[1997][8][10];
Console.WriteLine(“日期为:+contanier.DateTime”);
var tmp=项目[1997];
Console.WriteLine(“1997有“+tmp.items.Count+”月数”的项目);

<代码> >为什么不使用<代码>列表<代码>?考虑C5.NET库,你需要什么样的集合取决于你想用这些日期做什么。听起来像是一个自定义集合(实际上是TIE)。