使用元组列表:计算项目数

dem*_*lus 3 c# tuples

我有以下代码使用元组.输入是项目列表,输出是元组列表,我们需要基本计算每个日期的项目数.

List<Tuple<DateTime, int>> list = new List<Tuple<DateTime, int>>();
foreach (ItemClass item in items)
{
    foreach(Tuple<DateTime, int> tuple in list)
    {
         if (tuple.Item1 == item.date)
         {
              tuple.Item2++;
              continue;
          }
    }
    list.Add(Tuple.Create<DateTime, int>(item.date, 1)); 
}
Run Code Online (Sandbox Code Playgroud)

这段代码目前无法编译,因为它Item2是只读的,问题是如何让它工作?

之前这个用过,Dictionary但是我不得不删除它,因为外部代码不能接受它Dictionary.

das*_*ght 7

元组不适用于需要可变性的场景.您可以创建自己的类,它将一个DateTime可变整数计数器组合在一起,但您也可以使用LINQ,在最后转换为元组列表:

var list = items
    .GroupBy(item => item.date)
    .Select(g => Tuple.Create(g.Key, g.Count()))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

上面的代码为每个日期创建一个组,然后只有在知道每个组中项目的最终计数时才生成元组.