Compartir a través de


Usar la clase ConditionExpression

En Microsoft Dataverse, puede usar la clase ConditionExpression para comparar una columna de tabla con un valor o un conjunto de valores usando un operador, como "igual a" o "mayor que". La clase de ConditionExpression le permite pasar expresiones de condición como parámetros a otras clases, como QueryExpression y FilterExpression.

La siguiente tabla enumera las propiedades que puede definir para crear una condición que usa la clase de ConditionExpression.

Propiedad Descripción
AttributeName Especifica el nombre lógico de la columna en la expresión de condición.
Operator Especifica el operador de la condición. Esto se configura mediante la enumeración de ConditionOperator.
Values Especifica los valores de la columna.

Al usar el método de AddCondition(ConditionExpression) (o el constructor para ConditionExpression), es importante comprender si la matriz se agrega como varios valores o como una matriz.

El siguiente ejemplo del código muestra dos resultados diferentes en función de cómo se usa la matriz.

string[] values = new string[] { "Value1", "Value2" };  
ConditionExpression c = new ConditionExpression("name", ConditionOperator.In, values);  
Console.WriteLine(c.Values.Count); //This will output 2   
string[] values = new string[] { "Value1", "Value2" }object value = values;  
ConditionExpression c = new ConditionExpression("name", ConditionOperator.In, value);  
Console.WriteLine(c.Values.Count); //This will output 1  
  

En algunos casos, es necesario convertir a object[] o object, en función del comportamiento deseado.

Cuando crea una condición que compara el valor de una columna con una enumeración, como un código de estado, debe usar el método ToString para convertir el valor en una cadena.

Ejemplo: uso de la clase ConditionExpression

El siguiente ejemplo del código muestra cómo usar la clase de ConditionExpression.

  
//  Query using ConditionExpression    
ConditionExpression condition1 = new ConditionExpression();  
condition1.AttributeName = "lastname";    
condition1.Operator = ConditionOperator.Equal;    
condition1.Values.Add("Brown");                    
FilterExpression filter1 = new FilterExpression();    
filter1.Conditions.Add(condition1);    
QueryExpression query = new QueryExpression("contact");    
query.ColumnSet.AddColumns("firstname", "lastname");    
query.Criteria.AddFilter(filter1);    
EntityCollection result1 = _serviceProxy.RetrieveMultiple(query);    
Console.WriteLine();    
Console.WriteLine("Query using Query Expression with ConditionExpression and FilterExpression");    
Console.WriteLine("---------------------------------------");    
foreach (var a in result1.Entities)    
{  
      Console.WriteLine("Name: " + a.Attributes["firstname"] + " " + a.Attributes["lastname"]);    
}    
Console.WriteLine("---------------------------------------");  

Ejemplo: prueba de estado inactivo

El siguiente ejemplo del código muestra cómo usar la clase de ConditionExpression a fin de realizar una prueba para el estado inactivo.

  
ConditionExpression condition3 = new ConditionExpression();  
condition3.AttributeName = "statecode";  
condition3.Operator = ConditionOperator.Equal;  
condition3.Values.Add(AccountState.Active);  
  

Comparación de columnas

El siguiente ejemplo muestra cómo comparar columnas con la clase ConditionExpression:

public static EntityCollection ColumnComparisonExample(IOrganizationService service)
{
    QueryExpression query = new("contact")
    {
        Criteria = new FilterExpression(LogicalOperator.And)
        {
            Conditions = {
                {
                    new ConditionExpression(){
                        AttributeName = "firstname",
                        Operator = ConditionOperator.Equal,
                        CompareColumns = true,
                        Values = {
                            {"lastname"}
                        }
                    }
                }
            }
        }
    };
    return service.RetrieveMultiple(query);
}

Pasando true como el valor de la propiedad CompareColumns, value se trata como el nombre de la segunda columna para comparar los valores de attributeName. El valor predeterminado es falso.

También puede establecer esta propiedad usando el constructor compareColumns ConditionExpression opcional. El siguiente ejemplo crea una condición para devolver únicamente los registros en los que el nombre y el apellido coincidan,

var expression = new ConditionExpression(
    attributeName: "firstname",
    conditionOperator: ConditionOperator.Equal,
    compareColumns: true,
    value: "lastname");

Omita el parámetro compareColumns para crear una condición para devolver solo los registros donde nombre de pila es John.

var expression = new ConditionExpression(
    attributeName: "firstname",
    conditionOperator: ConditionOperator.Equal,
    value: "John");

Usar caracteres comodín en condiciones que utilizan valores de cadena

Puede usar caracteres comodín cuando construye consultas usando condiciones en valores de cadena. Más información: Usar caracteres comodín en condiciones para valores de cadena

Consulte también

Crear consultas
Crear consultas con QueryExpression
Usar la clase FilterExpression
ConditionExpression

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).