public List <HourUsersView> QueryTopUsersViews(string city, string district, DateTime begin, DateTime end, int topCount, OrderUsersStatPolicy policy) { var joinViews = QueryDistrictViews(city, district, begin, end).ToList(); var days = (joinViews.Max(x => x.StatTime) - joinViews.Min(x => x.StatTime)).Days + 1; return(QueryTopViewsByPolicy(joinViews, topCount * days, policy)); }
private List <HourUsersView> QueryTopViewsByPolicy(IEnumerable <HourUsersView> source, int topCount, OrderUsersStatPolicy policy) { switch (policy) { case OrderUsersStatPolicy.OrderByMaxRrcUsersDescending: return(source.OrderByDescending(x => x.MaxRrcUsers).Take(topCount).ToList()); case OrderUsersStatPolicy.OrderByMaxActiveUsersDescending: return(source.OrderByDescending(x => x.MaxActiveUsers).Take(topCount).ToList()); case OrderUsersStatPolicy.OrderByDownlinkActiveUsersDescending: return(source.OrderByDescending(x => x.DownlinkAverageActiveUsers).Take(topCount).ToList()); case OrderUsersStatPolicy.OrderByUplinkActiveUsersDescending: return(source.OrderByDescending(x => x.UplinkAverageActiveUsers).Take(topCount).ToList()); case OrderUsersStatPolicy.OrderByMaxCaUsersDescending: return(source.OrderByDescending(x => x.MaxCaUsers).Take(topCount).ToList()); } return(new List <HourUsersView>()); }
public List <HourUsersView> QueryTopUsersViews(DateTime begin, DateTime end, int topCount, OrderUsersStatPolicy policy) { var stats = Repository.FilterTopList(begin, end); var joinViews = stats.MapTo <List <HourUsersView> >(); var days = (joinViews.Max(x => x.StatTime) - joinViews.Min(x => x.StatTime)).Days + 1; return(QueryTopViewsByPolicy(joinViews, topCount * days, policy)); }