Use a classe FilterExpression
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
No Microsoft Dynamics 365 e Microsoft Dynamics 365 (online), você pode usar a classe FilterExpression para criar uma consulta que expressa várias condições. Por exemplo, você pode criar uma expressão de consulta que é equivalente a uma declaração SQL como ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'.
A tabela a seguir lista as propriedades para a classe FilterExpression.
Propriedade |
Descrição |
Obtém ou define expressões de condição que incluem atributos, operadores de condição e valores do atributo. |
|
Obtém ou define operadores de filtro AND/OR lógicos. Isso é definido com a enumeração LogicalOperator. |
|
Obtém ou define uma hierarquia de condição e expressões do filtro lógicas que filtram os resultados da consulta. |
|
Obtém ou define um valor que indica se a expressão faz parte de uma consulta de localização rápida. |
A classe FilterExpression também inclui vários métodos de ajuda que tornam mais fácil criar consultas. O método AddCondition adiciona uma ConditionExpression à propriedade Conditions para o FilterExpression, reduzindo a quantidade de código necessária para construir a expressão de condição. O método AddFilter adiciona um novo filtro à propriedade Filters da classes FilterExpression.
Neste tópico
Exemplo de expressão do filtro
Sobre a propriedade IsQuickFindFilter
Exemplo de expressão do filtro
O exemplo de código a seguir mostra como usar a classe FilterExpression.
QueryExpression query = new QueryExpression("contact");
query.ColumnSet.AddColumns("firstname", "lastname", "address1_city");
query.Criteria = new FilterExpression();
query.Criteria.AddCondition("address1_city", ConditionOperator.Equal, "Redmond");
FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or);
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Tharpe");
childFilter.AddCondition("lastname", ConditionOperator.Equal, "Brown");
// Pass query to service proxy
EntityCollection results = _serviceProxy.RetrieveMultiple(query);
Console.WriteLine();
Console.WriteLine("Query using QE with multiple conditions and filters");
Console.WriteLine("---------------------------------------");
// Print results
foreach (var a in results.Entities)
{
Console.WriteLine("Name: {0} {1}", a.GetAttributeValue<string>("firstname"), a.GetAttributeValue<string>("lastname"));
Console.WriteLine("City: {0}", a.GetAttributeValue<string>("address1_city"));
}
Console.WriteLine("---------------------------------------");
Sobre a propriedade IsQuickFindFilter
Você pode usar a propriedade FilterExpression.IsQuickFindFilter, que é análoga ao atributo isquickfindfields que existe no nó filter no XML fetchxml. Quando uma consulta Fetch é salva, é armazenada nas entidades IsQuickFind e SavedQuery da propriedade UserQuery. A propriedade IsQuickFindFilter foi adicionada para fornecer a consistência entre a Expressão de Consulta e as consultas XML de busca.
As regras a seguir se aplicam à propriedade IsQuickFindFilter:
Esse campo pode ser definido para true para filtrar expressões com um operador lógico do tipo LogicalOperator.Or. Se estiver definido como expressões com um operador lógico do tipo LogicalOperator.And, a propriedade IsQuickFindFilter é ignorada.
Somente uma expressão do filtro em uma hierarquia da expressão do filtro pode ser definida com IsQuickFindFilter = verdadeiro. Se mais de uma for localizada, uma exceção é lançada.
Se uma expressão de filtragem tiver IsQuickFindFilter definido como verdadeiro, ela não poderá ter propriedades de expressão do filtro filho, só poderá ter propriedades ConditionExpression. Se adicionar uma expressão de filtro secundária, uma exceção é lançada.
Todas as expressões relacionadas a uma expressão do filtro com IsQuickFindFilter definidas como verdadeiro devem ser condições de valores independentes não nulos. Em outras palavras, como essa condição é composta de atributo, operador e valor, apenas condições onde a propriedade de valor é um valor exclusivo que não seja nula têm suporte. Além disso, os únicos operadores de condição suportados nessas expressões de condição são aqueles que trabalham com um único valor que não é nulo. Se um valor nulo ou vários valores forem detectados, uma exceção é lançada.
Confira Também
FilterExpression
Criar consultas com QueryExpression
Usar uma junção externa à esquerda em QueryExpression para consultar registros “não incluídos”
Usar a classe ConditionExpression
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais