// Public members public override async Task ApplyAsync(ISearchContext context, ISearchResult result) { switch (ParseFormatBy(Value)) { case FormatBy.CommonName: await result.FormatByAsync(new CommonNameTaxonFormatter()); break; case FormatBy.FullName: await result.FormatByAsync(new BinomialNameTaxonFormatter() { NameFormat = BinomialNameFormat.Full }); break; case FormatBy.SpeciesOnly: await result.FormatByAsync(new BinomialNameTaxonFormatter() { NameFormat = BinomialNameFormat.Species }); break; case FormatBy.Gallery: result.DisplayFormat = SearchResultDisplayFormat.Gallery; break; case FormatBy.Leaderboard: result.DisplayFormat = SearchResultDisplayFormat.Leaderboard; // If the ordering has not already been modified, order the groups by the number of items in each. if (result.HasDefaultOrdering) { await result.OrderByAsync(Comparer <ISearchResultGroup> .Create((lhs, rhs) => lhs.Count().CompareTo(rhs.Count()))); } break; default: case FormatBy.ShortName: await result.FormatByAsync(new BinomialNameTaxonFormatter()); break; } }