public IEnumerable <T> ApplyFilter(IEnumerable <T> items, Specification.ISpecification <T> specification) { foreach (var item in items) { if (specification.IsSatisfied(item)) { yield return(item); } } }