public IList <QueueWithTopEnqueuedJobsDto> Queues() { var queuesData = Data.GetEnumeration <JobQueueDto>().ToList(); var queues = queuesData.GroupBy(q => q.Queue).ToDictionary(q => q.Key, q => q.Count()); var query = from kvp in queues let enqueuedJobIds = QueueApi.GetEnqueuedJobIds(kvp.Key, 0, 5, false) let counters = QueueApi.GetEnqueuedAndFetchedCount(queuesData, kvp.Key) select new QueueWithTopEnqueuedJobsDto { Name = kvp.Key, Length = counters.EnqueuedCount, Fetched = counters.FetchedCount, FirstJobs = EnqueuedJobs(enqueuedJobIds) }; return(query.ToList()); }