API de pesquisa com várias condições
Oct 09 2020
Sitecore 9.3
O que tenho até agora:
Sou capaz de filtrar itens com base em um modelo usando o contexto de pesquisa.
var unversionedImageTemplateId = ID.Parse(Constants.UnversionedImageTemplateId);
var jpegTemplateId = ID.Parse(Constants.Jpeg);
var results = context.GetQueryable<SearchResultItem>()
.Where(x => x.TemplateId == unversionedImageTemplateId || x.TemplateId == jpegTemplateId)
O que estou tentando fazer:
Quero colocar mais uma condição com base no valor de um campo, uma caixa de seleção.
O que eu tentei:
- Tentei usar
.Wheredepois do código que tenho. - Tentei aplicar a condição usando
&&no mesmoWherecomando.
Mas sempre recebo o seguinte erro.
Exception: System.NotSupportedException
Message: The method 'get_Item' is not supported.
Source: Sitecore.ContentSearch.Linq
Alguma ideia de como seguir em frente?
Respostas
2 VladIobagiu Oct 08 2020 at 23:45
Você deve usar o construtor Predicate para construir sua consulta. Você terá algo como:
var predicate = PredicateBuilder.True<SearchResultItem>();
predicate = predicate.And<SearchResultItem>(i => i.TemplateId == [Template ID]);
#Get items under specific node or Items from specific location in Sitecore –
predicate = predicate.And<SearchResultItem>(i => i.Paths.Contains([Location Item ID]));
#Get items for context language only –
predicate = predicate.And<SearchResultItem>(item => item.Language == Context.Language.Name);
# get items which have a field value
predicate = predicate.And<SearchResultItem>(item => item["fieldname"] == "Sitecore")
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino