private async Task <List <string> > FindUniqueWordsAsync(IWordsRepository wordsRepository, List <string> words) { var skip = 0; var take = 100; var n = words.Count; var uniqueWords = new List <string>(); while (skip < n) { var wordsPart = words .Skip(skip) .Take(take) .ToList(); var foundWords = await wordsRepository.FindAsync(wordsPart); var uniqueWordsPart = wordsPart .Except(foundWords.Select(wi => wi.Word)); uniqueWords.AddRange(uniqueWordsPart); skip += take; } return(uniqueWords); }