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