My intentions are to aggregate the results instead of narrow them down.
if (Request.QueryString["VenueType"] == null)
Renders = _renderContext.Renders;
else
{
List<int> venueTypeIds = Request.QueryString["VenueType"].Split(',')
.Select(int.Parse).ToList();
Renders = _renderContext.Renders.Where(v => venueTypeIds.Contains(v.VenueTypeId));
}
// SECOND CRITERION:
if (Request.QueryString["SearchTerm"] != null)
Renders = Renders.Where(r => r.Title.ToLower()
.Contains(Request.QueryString["SearchTerm"].ToLower()));
// ADDITIONAL CRITERION:
if (Request.QueryString["EventType"] != null)
{
List<int> eventTypeIds = Request.QueryString["EventType"].Split(',')
.Select(int.Parse).ToList();
Renders = Renders.Where(w => eventTypeIds.Contains(w.EventTypeId));
}
if (Request.QueryString["DisplayFormat"] != null)
{
List<int> displayFormatIds = Request.QueryString["DisplayFormat"].Split(',')
.Select(int.Parse).ToList();
Renders = Renders.Where(w => displayFormatIds.Contains(w.DisplayFormatId));
}
The Query Strings are coming from groups of checkboxes which may have one to many options. The results I am trying to return should not narrow down after the first set of criteria but instead return more results.
Question: How do I use either a where clause or GroupBy clause to get an aggregate of returned items rather than to narrow my returned items?