我有一个Dictionary<DateTime, double>>
类型的字典。
需要对字典进行区分,因此它包含唯一月份年组合的值,忽略日期。
1-May-14 -0.15
1-Apr-14 1.8
31-Mar-14 10
30-Mar-14 10
应该给出
1-May-14 -0.15
1-Apr-14 1.8
1-Mar-14 10
答案 0 :(得分:1)
您可以创建年份和月份的日期并将其分组:
IEnumerable<IGrouping<DateTime, double>> grouped =
dict.GroupBy(d => new DateTime(d.Key.Year, d.Key.Month, 1), d => d.Value);
现在您有一个集合,其中每个月的值具有一个或多个double
值。您只需决定如何处理多个值。
答案 1 :(得分:0)
你可以试试这个:
var dates = new Dictionary<DateTime, double>(){
{DateTime.Parse("2014-05-01"), -0.15},
{DateTime.Parse("2014-04-1"), 1.8},
{DateTime.Parse("2014-03-31"), 10},
{DateTime.Parse("2014-03-30"), 10}
};
var uniqueDates = new Dictionary<DateTime, double>(new DateEqualityComparer());
foreach(var item in dates) {
DateTime key = new DateTime(item.Key.Year, item.Key.Month, 1);
uniqueDates[key] = item.Value;
}
class DateEqualityComparer : IEqualityComparer<DateTime>
{
public bool Equals(DateTime value1, DateTime value2)
{
if (value1.Month == value2.Month && value1.Year == value2.Year) return true;
return false;
}
public int GetHashCode(DateTime value)
{
int hash = value.Month ^ value.Year;
return hash.GetHashCode();
}
}