EPiServer Find Sample

  • Basic
  • Sorting
  • Paging
  • Highlighting
  • Filters
  • Facets
  • Autocomplete
  • Map

Filtering Complex filtering with multiple options

Search for something general, like "Hotel", and play with the filters.

View Source
ITypeSearch<Hotel> query = client.Search<Hotel>()
    .For(q);

if (chains != null)
{
    var chainFilter = client.BuildFilter<Hotel>();
    foreach (var chain in chains)
    {
        chainFilter = chainFilter.Or(x => x.Chain.Match(chain));
    }
    query = query.Filter(chainFilter);
}

if (countries != null)
{
    var countryFilter = client.BuildFilter<Hotel>();
    foreach (var country in countries)
    {
        countryFilter = countryFilter.Or(x => x.Location.Country.Title.Match(country));
    }
    query = query.Filter(countryFilter);
}
            
var results = query.Select(x => new SearchHit
                            {
                                Title = x.Name,
                                Url = x.Website,
                                Location = new List { x.ShortAddress, x.Location.Title, x.Location.Country.Title }.Concatenate(", "),
                                StarRating = (int) x.StarRating
                            })
    .GetResult();