It gets generated across various classes and functions, but this code generates 
the columns and subqueries.

        public static IQueryable<VideoListItem> 
QueryVideoListItem(IQueryable<Media> query, SearchSettings settings) {
            if (settings == null)
                settings = new SearchSettings();

            var Result = (from v in query
                          select new VideoListItem() {
                              MediaId = v.MediaId,
                              MediaType = (MediaType)v.MediaTypeId,
                              Artist = v.Artist,
                              Title = v.Title,
                              Album = v.Album,
                              MediaCategoryId = v.MediaCategoryId,
                              FileName = v.FileName,
                              Preference = v.Preference,
                              Length = v.Length,
                              HasDownloadUrl = (v.DownloadUrl != ""),
                              BuyUrl = v.BuyUrl,
                              PhysicalMasculine = (from r in v.MediaRatings
                                                   where r.RatingCategory.Name 
== "Physical Masculine"
                                                   select 
r.DbGetValue(r.Height, r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              PhysicalFeminine = (from r in v.MediaRatings
                                                  where r.RatingCategory.Name 
== "Physical Feminine"
                                                  select r.DbGetValue(r.Height, 
r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              EmotionalMasculine = (from r in v.MediaRatings
                                                    where r.RatingCategory.Name 
== "Emotional Masculine"
                                                    select 
r.DbGetValue(r.Height, r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              EmotionalFeminine = (from r in v.MediaRatings
                                                   where r.RatingCategory.Name 
== "Emotional Feminine"
                                                   select 
r.DbGetValue(r.Height, r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              SpiritualMasculine = (from r in v.MediaRatings
                                                    where r.RatingCategory.Name 
== "Spiritual Masculine"
                                                    select 
r.DbGetValue(r.Height, r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              SpiritualFeminine = (from r in v.MediaRatings
                                                   where r.RatingCategory.Name 
== "Spiritual Feminine"
                                                   select 
r.DbGetValue(r.Height, r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              //Love = (from r in v.MediaRatings
                              //        where r.RatingCategory.Name == "Love"
                              //             select r.DbGetValue(r.Height, 
r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              //Egoless = (from r in v.MediaRatings
                              //        where r.RatingCategory.Name == "Egoless"
                              //           select r.DbGetValue(r.Height, 
r.Depth, settings.RatingRatio)).FirstOrDefault(),
                              //Custom = 
string.IsNullOrEmpty(settings.RatingCategory) ? null :
                              //        (from r in v.MediaRatings
                              //        where r.RatingCategory.Name == 
settings.RatingCategory && r.RatingCategory.Custom
                              //        select r.DbGetValue(r.Height, r.Depth, 
settings.RatingRatio)).FirstOrDefault(),
                              IsInDatabase = true
                          });
            return Result;
        }

Etienne


Reply via email to