/// <summary> /// Creates an <see cref="IEnumerable{PublishedSearchResult}" /> containing all content from the <paramref name="cache" />. /// </summary> /// <param name="results">The search results.</param> /// <param name="cache">The cache to fetch the content from.</param> /// <returns> /// An <see cref="IEnumerable{PublishedSearchResult}" /> containing all content. /// </returns> /// <exception cref="ArgumentNullException">cache</exception> /// <remarks> /// Search results are skipped if it can't be fetched from the <paramref name="cache" /> by its integer id. /// </remarks> public static IEnumerable <PublishedSearchResult> ToPublishedSearchResults(this IEnumerable <ISearchResult> results, IPublishedCache cache) { if (cache == null) { throw new ArgumentNullException(nameof(cache)); } var publishedSearchResults = new List <PublishedSearchResult>(); foreach (var result in results) { if (int.TryParse(result.Id, out var contentId) && cache.GetById(contentId) is IPublishedContent content) { publishedSearchResults.Add(new PublishedSearchResult(content, result.Score)); } } return(publishedSearchResults); }
public static IEnumerable <PublishedSearchResult> ToPublishedSearchResults(this IEnumerable <ISearchResult> results, IPublishedCache cache) { var list = new List <PublishedSearchResult>(); foreach (var result in results.OrderByDescending(x => x.Score)) { if (!int.TryParse(result.Id, out var intId)) { continue; //invalid } var content = cache.GetById(intId); if (content == null) { continue; // skip if this doesn't exist in the cache } list.Add(new PublishedSearchResult(content, result.Score)); } return(list); }
private static IPublishedContent ItemById(Guid id, IPublishedCache cache) { var doc = cache.GetById(id); return(doc); }
private static IPublishedContent?ItemById(Guid id, IPublishedCache?cache) => cache?.GetById(id);