C#:尝试使用日期时间和其中一个关联值将字典与元组<datetime,int>键聚合

时间:2016-09-12 19:19:55

标签: c# dictionary

我花了几个小时尝试将它拼凑在一起,但我很难找到一个例子。我有一个带有元组键的字典和一个类中的一组值。我希望能够做的是聚合(通过平均)datetime的值集和存储的值,这是我的聚合指标。

我真的很挣扎如何基于元组键和存储值的单个部分进行聚合。如果它在SQL中,它看起来像:

select datetime, [aggregate value], avg(myaggregatedfields) 
from dictionary 
group by datetime, [aggregate value]

但是元组正在绊倒我。任何帮助将不胜感激,即使它指向教程。我使用元组的原因是我需要使用这两个值来确保唯一性。

1 个答案:

答案 0 :(得分:0)

可能是这样的:

    class MyClass
    {
        public DateTime Time { get; set; }
        public int OtherVal { get; set; }
        public double AggField { get; set; }
    }




        List<MyClass> lst = new List<MyClass>();

        lst.Add(new MyClass { Time = DateTime.Today, OtherVal = 4, AggField = 1});
        lst.Add(new MyClass { Time = DateTime.Today, OtherVal = 4, AggField = 2 });
        lst.Add(new MyClass { Time = DateTime.Today, OtherVal = 3, AggField = 3 });

        var grouped = lst.GroupBy(c => new Tuple<DateTime, int>(c.Time, c.OtherVal));
        var dic = new Dictionary<Tuple<DateTime, int>, double>();

        foreach (var group in grouped)
        {
            var agg = group.Average(c => c.AggField);
            dic.Add(group.Key, agg);
        }