public async Task <IReadOnlyDictionary <Guid, MediaThumbnail> > GetThumbnailsByMediaIdsAsync( IEnumerable <Guid> mediaIds, ThumbnailSizeName size, CancellationToken cancellationToken) { FilterDefinition <Media> filter = Builders <Media> .Filter .In(x => x.Id, mediaIds.ToList()); filter = filter & Builders <Media> .Filter.ElemMatch(x => x.Thumbnails, Builders <MediaThumbnail> .Filter.Eq(t => t.Size, size)); List <Media> medias = await _mediaStoreContext.Medias.Find(filter) .ToListAsync(cancellationToken); var result = new Dictionary <Guid, MediaThumbnail>(); foreach (Media media in medias) { MediaThumbnail?thumb = media !.Thumbnails !.Where(x => x.Size == size && x.Format == "webp") .FirstOrDefault(); if (thumb != null) { thumb.Data = await Thumbnails.GetAsync(thumb.Id, cancellationToken); result.Add(media.Id, thumb); } } return(result); }