public static ICriteria <T> And <T>(ICollection <ICriteria <T> > criteriaList) { if (criteriaList == null || criteriaList.Count == 0) { return(new AlwaysTrueCriteria <T>()); } ICriteria <T> criteria = null; foreach (var crit in criteriaList) { if (criteria == null) { criteria = crit; continue; } criteria = criteria.And(crit); } return(criteria); }