public static int GetMediaCount(MediaType mediaType, RatingCategory ratingCategory, float[] minMax, double ratio) {
     using (Entities context = new Entities()) {
         if (ratingCategory.Name != "Intensity")
             return GetMediaQuery(context, mediaType, ratingCategory, minMax[0], minMax[1], ratio).Count();
         else
             return GetIntensityQuery(context, mediaType, ratingCategory, minMax[0], minMax[1], ratio).Count();
     }
 }
 public static IQueryable<Media> GetMediaQuery(Entities context, MediaType mediaType, RatingCategory ratingCategory, double min, double max, double ratio) {
     var Query = (from m in context.Media
                  let val = (from r in m.MediaRatings
                             where r.RatingCategory.Name == ratingCategory.Name
                             select r.DbGetValue(r.Height, r.Depth, ratio)).FirstOrDefault()
                  where (mediaType == MediaType.None || m.MediaTypeId == (int)mediaType) &&
                     val != null && val > min && val <= max
                  orderby m.Artist, m.Title
                  select m);
     return Query;
 }
 public static IQueryable<Media> GetIntensityQuery(Entities context, MediaType mediaType, RatingCategory ratingCategory, double min, double max, double ratio) {
     var Query = (from m in context.Media
                      let val = (from r in m.MediaRatings
                                 let val = r.DbGetValue(r.Height, r.Depth, ratio)
                                 orderby val descending
                                 select val).Take(5).Average()
                  where (mediaType == MediaType.None || m.MediaTypeId == (int)mediaType) &&
                     val > min && val <= max
                  orderby m.Artist, m.Title
                  select m);
     return Query;
 }
 public static int GetMediaCount(MediaType mediaType, RatingCategory ratingCategory, float[] minMax, double ratio)
 {
     using (Entities context = new Entities()) {
         if (ratingCategory.Name != "Intensity")
         {
             return(GetMediaQuery(context, mediaType, ratingCategory, minMax[0], minMax[1], ratio).Count());
         }
         else
         {
             return(GetIntensityQuery(context, mediaType, ratingCategory, minMax[0], minMax[1], ratio).Count());
         }
     }
 }
 /// <summary>
 /// Returns a list of video count for each graph bar.
 /// </summary>
 /// <param name="mediaType">The type of media to return.</param>
 /// <param name="graphType">The rating type to generate the graph for.</param>
 /// <param name="ratio">The ratio to use when multiplying Height and Depth.</param>
 /// <returns>A list of 14 integers.</returns>
 public List<int> LoadGraph(MediaType mediaType, RatingCategory graphType, double ratio) {
     List<int> Result = new List<int>();
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[0], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[1], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[2], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[3], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[4], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[5], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[6], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[7], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[8], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[9], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[10], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[11], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[12], ratio));
     Result.Add(DistributionGraphAccess.GetMediaCount(mediaType, graphType, bars[13], ratio));
     return Result;
 }
        public static IQueryable <Media> GetMediaQuery(Entities context, MediaType mediaType, RatingCategory ratingCategory, double min, double max, double ratio)
        {
            var Query = (from m in context.Media
                         let val = (from r in m.MediaRatings
                                    where r.RatingCategory.Name == ratingCategory.Name
                                    select r.DbGetValue(r.Height, r.Depth, ratio)).FirstOrDefault()
                                   where (mediaType == MediaType.None || m.MediaTypeId == (int)mediaType) &&
                                   val != null && val > min && val <= max
                                   orderby m.Artist, m.Title
                         select m);

            return(Query);
        }
        public static IQueryable <Media> GetIntensityQuery(Entities context, MediaType mediaType, RatingCategory ratingCategory, double min, double max, double ratio)
        {
            var Query = (from m in context.Media
                         let val = (from r in m.MediaRatings
                                    let val = r.DbGetValue(r.Height, r.Depth, ratio)
                                              orderby val descending
                                              select val).Take(5).Average()
                                   where (mediaType == MediaType.None || m.MediaTypeId == (int)mediaType) &&
                                   val > min && val <= max
                                   orderby m.Artist, m.Title
                         select m);

            return(Query);
        }
 /// <summary>
 /// Returns a list of video count for each graph bar.
 /// </summary>
 /// <param name="mediaType">The type of media to return.</param>
 /// <param name="graphType">The rating type to generate the graph for.</param>
 /// <param name="ratio">The ratio to use when multiplying Height and Depth.</param>
 /// <returns>A list of 14 integers.</returns>
 public async Task<List<int>> LoadGraphAsync(MediaType mediaType, RatingCategory graphType, double ratio) {
     return await Task.Run(() => LoadGraph(mediaType, graphType, ratio));
 }