Compartir vía


Usar la clase FilterExpression

En Microsoft Dataverse y , 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 columnas de tabla, operadores de condición y valores de columna.
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. La propiedad FilterExpression.ConditionExpression el método agrega una ConditionExpression a la propiedad Conditions para la FilterExpression, reduciendo la cantidad de código necesario para construir la expresión de condición. La propiedad AddFilter.LogicalOperator el método añade un nuevo filtro a la propiedad Filters de la clase FilterExpression .

Ejemplo de expresión de filtro

El siguiente ejemplo del código muestra cómo usar la clase de 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 el método FilterExpression.IsQuickFindFilter Propiedad, que es análoga a la columna isquickfindfields que existe en el nodo filter en Fetch XML. Cuando se guarda una consulta de Fetch, esta se almacena en las propiedades IsQuickFind de las tablas 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. En otras palabras, dado que una condición se compone de columna, operador y valor, solo se admiten las condiciones donde la propiedad del valor es un valor único que no es nulo. 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.

Vea también

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

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).