1

グループ化されたオブジェクトのリストから平均 TimeSpan を取得する必要がありますが、どこから始めればよいかわかりません。

リスト内の各オブジェクトには TimeSpan タイプのプロパティがあり、リストを別のプロパティでグループ化しました。ここで、各グループの平均 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 はカテゴリでグループ化されており、グループ内の 2 つのアイテムの期間の平均が必要です。

どんな助けでも大歓迎です。

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 に答える