public virtual List <Project> GetLast(ProjectStatus status, int max) { var offset = 0; var lastProjects = new List <Project>(); var projects = projectDao.GetLast(status, offset, max) .Where(CanRead) .ToList(); lastProjects.AddRange(projects); while (lastProjects.Count < max) { offset = offset + max; projects = projectDao.GetLast(status, offset, max); if (projects.Count == 0) { return(lastProjects); } projects = projects .Where(CanRead) .ToList(); lastProjects.AddRange(projects); } return(lastProjects.Count == max ? lastProjects : lastProjects.GetRange(0, max)); }
public IEnumerable <Project> GetLast(ProjectStatus status, int max) { var offset = 0; var lastProjects = new List <Project>(); do { var projects = projectDao.GetLast(status, offset, max); if (!projects.Any()) { return(lastProjects); } lastProjects.AddRange(projects.Where(canReadDelegate)); offset = offset + max; } while (lastProjects.Count < max); return(lastProjects.Count == max ? lastProjects : lastProjects.GetRange(0, max)); }