async Task <List <HeroCard> > GetHeroCardsForTracksAsync(string genre) { List <Item> tracks = new GrooveService().GetTracks(genre); var cogSvc = new CognitiveService(); foreach (var track in tracks) { track.ImageAnalysis = await cogSvc.AnalyzeImageAsync(track.ImageUrl); } var cards = (from track in tracks let artists = string.Join(", ", from artist in track.Artists select artist.Artist.Name) select new HeroCard { Title = track.Name, Subtitle = artists, Text = track.ImageAnalysis.Description?.Captions?.First()?.Text ?? "No Description", Images = new List <CardImage> { new CardImage { Alt = track.Name, Tap = BuildBuyCardAction(track), Url = track.ImageUrl } }, Buttons = new List <CardAction> { BuildBuyCardAction(track), BuildNewsCardAction(track) } }) .ToList(); return(cards); }