Use a classe FilterExpression

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

No Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM 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

Conditions

Obtém ou define expressões de condição que incluem atributos, operadores de condição e valores do atributo.

FilterOperator

Obtém ou define operadores de filtro AND/OR lógicos. Isso é definido com a enumeração LogicalOperator.

Filters

Obtém ou define uma hierarquia de condição e expressões do filtro lógicas que filtram os resultados da consulta.

IsQuickFindFilter

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

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais