groupby计数和百分比

时间:2014-03-20 10:48:27

标签: c# asp.net linq

是否有一种简单的方法可以在Linq GroupBy中显示总数的百分比?

我目前有:

private static object GetPageUsers(IEnumerable<Pagehit> getPageLog)
{
    return getPageLog
          .GroupBy(g => g.UserID)
          .Select(x => new { User = GetUserFName(x.Key.ToString()),
                             NumberOfHits = x.Count(),
                             percentage = x.Count() / total
          })
          .OrderByDescending(o => o.NumberOfHits);
}

在这一行percentage = x.Count() / total中如何获得总数?

1 个答案:

答案 0 :(得分:1)

getPageLog是IEnumerable,因此它没有Count属性。但它应该有一个Count()扩展方法。

你可以使用:

private static object GetPageUsers(IEnumerable<Pagehit> getPageLog)
{
    return getPageLog
          .GroupBy(g => g.UserID)
          .Select(x => new { User = GetUserFName(x.Key.ToString()),
                             NumberOfHits = x.Count(),
                             percentage = (100 * x.Count()) / getPageLog.Count() + "%"
          })
          .OrderByDescending(o => o.NumberOfHits);
}