缓存的数据结构(Key = DateTime,Value = decimal)

时间:2013-04-18 13:32:05

标签: c# asp.net

我有一个计算一天员工工作时间的功能。但是,它很慢,因为它考虑了携带时间和其他事情。

我想我可以通过缓存一天中的小时数来优化这一点,并且只在更改时更新。

我正在寻找能够迅速做到的事情:

Set(date,hours)
HasHoursFor(date)
GetHoursFor(date)

我应该使用什么?

我可以使用Dictionary,但我想知道是否没有某种哈希方式可以快速设置,获取和包含。

1 个答案:

答案 0 :(得分:1)

您可以使用Dictionary<DateTime,int>并根据日期缓存小时数,如下所示:

Dictionary<DateTime,int> dict = new Dictionary<DateTime,int>();

void Set(DateTime date, int hours)
{
    if (dict.Contains(date)) dict.Remove(date);

    dict.Add(date.Date,hours);
}

bool HasHoursForDate(DateTime date)
{
    return dict.Contains(date.Date);
}

int GetHoursForDate(DateTime date)
{
    return dict[date.Date];
}

Set(DateTime.Now,8);

我将日期标准化,以便它只是日期并且不关心时间部分,否则会导致比较。我还假设您有整整几个小时,否则您可能希望将int更改为double等。