Мои намерения состоят в том, чтобы агрегировать результаты, а не сужать их.
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));
}
Строки запроса поступают из групп флажков, которые могут иметь от одной до многих опций. Результаты, которые я пытаюсь вернуть, не должны сужаться после первого набора критериев, а должны возвращать больше результатов.
Вопрос. Как использовать предложение where или предложение GroupBy для получения совокупности возвращаемых элементов, а не для сужения возвращаемых элементов?