我花了几个小时尝试将它拼凑在一起,但我很难找到一个例子。我有一个带有元组键的字典和一个类中的一组值。我希望能够做的是聚合(通过平均)datetime的值集和存储的值,这是我的聚合指标。
我真的很挣扎如何基于元组键和存储值的单个部分进行聚合。如果它在SQL中,它看起来像:
select datetime, [aggregate value], avg(myaggregatedfields)
from dictionary
group by datetime, [aggregate value]
但是元组正在绊倒我。任何帮助将不胜感激,即使它指向教程。我使用元组的原因是我需要使用这两个值来确保唯一性。
答案 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);
}