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