public IEnumerable <Subgroup> Filter(IEnumerable <Subgroup> unfilteredSubgroups, Group group) { var specsList = new List <ISpecification <Subgroup> > { new SubgroupGroupSpecification(group) }; var andSpecification = new AndSpecification <Subgroup>(specsList); var specificationChecker = new SpecificationChecker <Subgroup>(); return(specificationChecker.Filter(unfilteredSubgroups, andSpecification)); }
public IEnumerable <Product> Filter(IEnumerable <Product> unfilteredProducts, Group group, Subgroup subgroup, string name, string sequence) { var specsList = new List <ISpecification <Product> > { new ProductNameSpecification(name), new ProductSequenceSpecification(sequence) }; if (group != null) { specsList.Add(new ProductGroupSpecification(group)); } if (subgroup != null) { specsList.Add(new ProductSubgroupSpecification(subgroup)); } var andSpecification = new AndSpecification <Product>(specsList); var specificationChecker = new SpecificationChecker <Product>(); return(specificationChecker.Filter(unfilteredProducts, andSpecification)); }