public List <NumberOccurrence> GetNumbersFilteredOrdered( bool leastFirst, bool byNumbers, Func <Drawings, bool, bool, List <NumberOccurrence> > selectedNumbers, Func <Numbers, bool> condition = null) { if (condition == null) { return(selectedNumbers(Drawings, leastFirst, byNumbers)); } Drawings drw = new Drawings(); drw.AddRange(Drawings.Where(d => condition(d))); return(selectedNumbers(drw, leastFirst, byNumbers)); }