C# PackageName列出的USAGests前5大应用程序

C# PackageName列出的USAGests前5大应用程序,c#,linq,C#,Linq,在UsageStats课程的背景下,我与LINQ有一个问题。 我想做的是得到使用的前5个包,并显示它们在前台花费的时间的总和 USAGestsList是我的列表结果,我这样做,效果很好: usagestastslist=usagestastslist.OrderBy(x=>-(x.TotalTimeInForeground)).ToList() 但当然,这并不是按packagename分组的,单个软件包可以显示多次(我一次就可以获得一周的统计数据)。 如果我这样做: usagestastslis

在UsageStats课程的背景下,我与LINQ有一个问题。 我想做的是得到使用的前5个包,并显示它们在前台花费的时间的总和

USAGestsList是我的列表结果,我这样做,效果很好:

usagestastslist=usagestastslist.OrderBy(x=>-(x.TotalTimeInForeground)).ToList()

但当然,这并不是按packagename分组的,单个软件包可以显示多次(我一次就可以获得一周的统计数据)。 如果我这样做:

usagestastslist.GroupBy(x=>x.PackageName)

我可以对它们进行分组,但无法获得顶级应用程序的聚合TotalTimeInformound


很明显,这是一个LINQ理解问题,但我不确定如何解决它。

完美!非常感谢。每一行上的注释正是我理解代码错误之处所需要的。
var top5packages = usageStatsList
   .GroupBy(us => us.PackageName) // group stats by package
   .Select(g => new { // create group projection with aggregated time
        PackageName = g.Key,
        TotalTimeInForeground = g.Sum(us => us.TotalTimeInForeground)
   }) 
   .OrderByDescending(x => x.TotalTimeInForeground) // order by total time       
   .Take(5); // return top 5 aggregated objects