diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs index 5413558fe..7e1c37381 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs @@ -14,6 +14,7 @@ namespace Orchard.Taxonomies.Projections { public class TermsFilter : IFilterProvider { private readonly ITaxonomyService _taxonomyService; + private int _termsFilterId; public TermsFilter(ITaxonomyService taxonomyService) { _taxonomyService = taxonomyService; @@ -55,14 +56,13 @@ namespace Orchard.Taxonomies.Projections { var allIds = allChildren.Select(x => x.Id).ToList(); switch(op) { - case 0: - // is one of - Action s = alias => alias.ContentPartRecord().Property("Terms", "terms").Property("TermRecord", "termRecord"); - Action f = x => x.InG("Id", allIds); + case 0: // is one of + // Unique alias so we always get a unique join everytime so can have > 1 HasTerms filter on a query. + Action s = alias => alias.ContentPartRecord().Property("Terms", "terms" + _termsFilterId++); + Action f = x => x.InG("TermRecord.Id", allIds); context.Query.Where(s, f); break; - case 1: - // is all of + case 1: // is all of foreach (var id in allIds) { var termId = id; Action selector =