1

我需要从分组对象列表中检索平均时间跨度,但不知道从哪里开始。

列表中的每个对象都有一个 TimeSpan 类型的属性,我已经按另一个属性对列表进行了分组。现在我需要每组的平均时间跨度。

List<Item> Items = new List<Item>();
Item _item1 = new Item { Category = "A", Duration = _someTimeSpan1};
Item _item2 = new Item { Category = "B", Duration = _someTimeSpan2};
Item _item3 = new Item { Category = "A", Duration = _someTimeSpan3};
Items.Add(_item1);
Items.Add(_item2);
Items.Add(_item3);

var _groupedItems = Items.GroupBy(i => i.Category);

在上面的示例中,_item1 和 _item3 按类别分组,我需要组中这两个项目的平均持续时间。

任何帮助表示赞赏。

4

3 回答 3

3
foreach (var group in _groupedItems) {
   var avg = TimeSpan.FromSeconds(group.Average(i => i.Duration.TotalSeconds));
}
于 2013-05-28T19:52:34.857 回答
2
var _groupedItems = Items.GroupBy(i => i.Category)
    .Select(g => new { Cat = g.Key, 
    Avg = new TimeSpan(Convert.ToInt64(g.Select(x=>x.Duration.Ticks).Average())) });
于 2013-05-28T19:52:46.027 回答
0

这应该够了吧:

foreach (var group in _groupedItems){
    Console.WriteLine(group.Average(g => g.Duration.TotalMilliseconds));
}
于 2013-05-28T19:51:49.823 回答