public override IEnumerable <SearchResult> Search(Query query) { var searchResults = new List <SearchResult>(); // Clear previous search results _youTubeProvider.SearchResult.Clear(); foreach (var item in _youTubeRepository.Search(query.SearchQuery)) { if (item.id.kind == "youtube#video") { var mappedIdentity = _identityMappingService.Get(MappedIdentity.ConstructExternalIdentifier(_youTubeProvider.ProviderKey, string.Format("video/{0}/{1}", _youTubeProvider.SearchResultNode.ID, item.id.videoId)), true); var youTubeSearchResult = _youTubeProvider.CreateSearchResult(mappedIdentity, item); searchResults.Add(CreateSearchResult(youTubeSearchResult)); _youTubeProvider.SearchResult.Add(youTubeSearchResult); } } // Clear child items from the search node DataFactoryCache.RemoveListing(_youTubeProvider.SearchResultNode); return(searchResults); }