c# - 使用元组列表 : calculating number of items

标签 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)); 
}

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

早些时候这与 Dictionary 一起工作,但我不得不删除它,因为外部代码无法与 Dictionary 一起工作。

最佳答案

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

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

上面的代码为每个日期创建一个组,然后仅当每个组中项目的最终计数已知时才生成元组。

关于c# - 使用元组列表 : calculating number of items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30545801/

相关文章:

python - 在 Python 中一次为一个对象分配多个属性

nsarray - Swift 中的元组数组

python - 实习生如何处理不可变对象(immutable对象)?

c# - 简单的对象绑定(bind)到 Treeview 节点

mysql - 什么时候元组长度太长?

python - 在 python 中创建元组集

c# - 转换为十六进制字符串或从十六进制字符串转换时如何设置字节顺序

c# - 有没有办法在不添加 .dbml 文件的情况下使用 Linq to SQL?

c# - 根据条件循环两个 XElements

C# 保护应用程序免受代码注入(inject)