public IEnumerable <Product> Filter(IEnumerable <Product> items, Ispecification <Product> spec) { foreach (var p in items) { if (spec.IsSatisfied(p)) { yield return(p); } } }
public AndSpecification(Ispecification <T> first, Ispecification <T> second) { this.first = first; this.second = second; }