Compartir por


Usar la clase FilterExpression

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

En Microsoft Dynamics CRM 2015 y Microsoft Dynamics CRM Online, puede usar la clase FilterExpression para crear una consulta que exprese varias condiciones. Por ejemplo, puede crear una expresión de consulta que sea equivalente a una instrucción SQL como ([FirstName] = 'Joe' OR [FirstName] = 'John') AND [City] = 'Redmond'.

La tabla siguiente enumera las propiedades de la clase FilterExpression.

Propiedad

Descripción

Conditions

Obtiene o establece expresiones de condición que incluyen atributos, operadores de condición y valores de atributos.

FilterOperator

Obtiene o establece operadores de filtros lógicos AND/OR. Esto se configura mediante la enumeración LogicalOperator.

Filters

Obtiene o establece una jerarquía de expresiones de filtro condicionales y lógicas que filtran los resultados de la consulta.

IsQuickFindFilter

Obtiene o establece un valor que indica si expresión forma parte de una consulta de búsqueda rápida.

La clase FilterExpression también incluye varios métodos auxiliares que facilitan la creación de consultas. El método AddCondition agrega una ConditionExpression a la propiedad Conditions para la clase FilterExpression, lo que reduce la cantidad de código necesario para crear la expresión de condición. El método AddFilter agrega un nuevo filtro a la propiedad Filters de la clase FilterExpression.

En este tema

Ejemplo de expresión de filtro

Acerca de la propiedad IsQuickFindFilter

Ejemplo de expresión de filtro

El siguiente ejemplo del código muestra cómo usar la clase 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("---------------------------------------");

Acerca de la propiedad IsQuickFindFilter

Puede usar la propiedad FilterExpression.IsQuickFindFilter, que es análoga al atributo isquickfindfields que existe en el nodo filter de FetchXML. Cuando se guarda una consulta de Fetch, se almacena en la propiedad IsQuickFind de las entidades SavedQuery y UserQuery. La propiedad IsQuickFindFilter se agregó para proporcionar coherencia entre las consultas FetchXML y las expresiones de consulta.

Las siguientes reglas se aplican a la propiedad IsQuickFindFilter:

  • Este campo solo se puede establecer en true para las expresiones de filtro con un operador lógico de tipo LogicalOperator.Or. Si se establece en expresiones con un operador lógico de tipo LogicalOperator.And, la propiedad IsQuickFindFilter se omite.

  • Solo se puede establecer una expresión de filtro en una jerarquía de expresiones de filtro con IsQuickFindFilter = true. Si se encuentra más de una, se genera una excepción.

  • Si una expresión de filtro tiene la propiedad IsQuickFindFilter establecida en true, no puede tener ninguna propiedad de expresión de filtro secundaria, solo puede tener propiedades ConditionExpression. Si se agrega una expresión de filtro secundaria, se genera una excepción.

  • Todas las expresiones de condición relacionadas con una expresión de filtro con la propiedad IsQuickFindFilter establecida en true deben ser condiciones con un solo valor no nulo. Es decir, teniendo en cuenta que una condición está compuesta por atributo, operador y valor, solo se admiten las condiciones cuya propiedad de valor sea un solo valor que no es null. Además, los únicos operadores de condición admitidos en estas expresiones de condición son los que funcionan con un solo valor que no es nulo. Si se detecta un valor null o varios valores, se genera una excepción.

Ver también

FilterExpression
Crear consultas con QueryExpression
Usar una combinación externa izquierda en QueryExpression para consultar los registros "no en"
Usar la clase ConditionExpression

© 2017 Microsoft. Todos los derechos reservados. Copyright