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