private async Task <List <int> > FetchNextJobForChannel(AufbereitungsArtEnum aufbereitungsArt, int channel, int anzahlJobs, int[] idsToExclude) { var nextJobs = new List <int>(); // Spezialfall: Im Normalfall sollten die Kategorien fortlaufend nummeriert sein. Aber es gibt den Fall für Kanal 4 // der definiert dass Prioritäten zuerst 6-9 verarbeitet werden sollen, und wenn es dann nichts mehr hat die Prioritäten 1-5 // Daher müssen wir die Kategorien anschauen und prüfen ob es einen "Bruch" gibt. Wenn ja, dann müssen wir ggf. 2 Db Abfragen // machen. var kategorienRanges = KategorieRangesPerChannel[channel]; foreach (var kategorienRange in kategorienRanges) { nextJobs.AddRange(await primaerdatenDb.GetNextJobsForChannel(aufbereitungsArt, kategorienRange.ToArray(), anzahlJobs, idsToExclude)); if (nextJobs.Count >= anzahlJobs) // Liefere die Jobs zurück, aber maximal soviele wie verlangt wurden. { return(nextJobs.GetRange(0, anzahlJobs)); } } return(nextJobs); }