【问题标题】:C# Best practice - Counting how many times each date occursC# 最佳实践 - 计算每个日期出现的次数
【发布时间】:2013-08-07 11:44:46
【问题描述】:

我正在寻找一种最佳做法来计算每个日期在列表中出现的次数。

目前,我有工作代码(刚刚测试过),但我认为我这样做的方式不太好。

var dates = new List<DateTime>();
//Fill list here

var dateCounter = new Dictionary<DateTime, int>();

foreach (var dateTime in dates)
{
   if (dateCounter.ContainsKey(dateTime))
   {
      //Increase count
      dateCounter[dateTime] = dateCounter[dateTime] + 1;
   }
   else
   {
      //Add to dictionary
      dateCounter.Add(dateTime, 1);
   }
}

谁知道更好的解决方案?

【问题讨论】:

  • 仅供参考:我遇到的主要问题是对于每个重复的日期,您查看列表 3 次(Contains 和每个 dateCounter[dateTime])。只需一次查找即可完成。

标签: c# list datetime dictionary


【解决方案1】:
dates.GroupBy(d => d).ToDictionary(g => g.Key, g => g.Count());

【讨论】:

  • 我希望我能打字更快:)
  • 谢谢,请在 8 分钟内将其作为答案;)
  • 我正在输入相同的解决方案时,我看到“已经对此做出了回答..”这次你输入/回答的速度比我快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2010-10-17
  • 2011-05-20
  • 1970-01-01
相关资源
最近更新 更多