我的意图是汇总结果,而不是缩小范围。
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子句获取返回项的聚合,而不是缩小返回的项?
答案 0 :(得分:-1)
如果我正确理解你的问题,你可以逐步建立你的结果,就像这样(代码简化为了简洁)......
IQueryable query = from x in Context.Stuff
select x;
List<Stuff> output = List<Stuff>();
output = query.Where(r => r.Title).Contains("SearchTerm")).ToList();
output += query.Where(r => r.Title).Contains("DifferentSearchTerm")).ToList();
有关如何在Linq中执行显式Group By的信息,请参阅this So post,尽管鉴于您的标准的复杂性,我认为这将是相当难以维护的。