DataColumn.Expression DataColumn.Expression DataColumn.Expression DataColumn.Expression Property

Definition

Obtiene o establece la expresión utilizada para filtrar filas, calcular los valores de una columna o crear una columna agregada. Gets or sets the expression used to filter rows, calculate the values in a column, or create an aggregate column.

public:
 property System::String ^ Expression { System::String ^ get(); void set(System::String ^ value); };
[System.Data.DataSysDescription("DataColumnExpressionDescr")]
public string Expression { get; set; }
member this.Expression : string with get, set
Public Property Expression As String

Property Value

Expresión para calcular el valor de una columna o para crear una columna agregada. An expression to calculate the value of a column, or create an aggregate column. El tipo de valor devuelto de una expresión está determinado por el DataType de la columna. The return type of an expression is determined by the DataType of the column.

Exceptions

Las propiedades AutoIncrement o Unique están establecidas en true. The AutoIncrement or Unique property is set to true.

Al utilizar la función CONVERT, la expresión se evalúa como cadena, pero la cadena no contiene una representación que se pueda convertir al parámetro de tipo. When you are using the CONVERT function, the expression evaluates to a string, but the string does not contain a representation that can be converted to the type parameter.

Al utilizar la función CONVERT, la conversión solicitada no es posible. When you are using the CONVERT function, the requested cast is not possible. Consulte la función de conversión de la siguiente sección para obtener información detallada sobre las posibles conversiones. See the Conversion function in the following section for detailed information about possible casts.

Al utilizar la función SUBSTRING, el argumento de inicio está fuera del intervalo. When you use the SUBSTRING function, the start argument is out of range. O bien -Or- Al utilizar la función SUBSTRING, el argumento de longitud está fuera del intervalo. When you use the SUBSTRING function, the length argument is out of range.

Al utilizar la función LEN o TRIM, la expresión no se evalúa como cadena. When you use the LEN function or the TRIM function, the expression does not evaluate to a string. Esto incluye expresiones que se evalúan como Char. This includes expressions that evaluate to Char.

Examples

El siguiente ejemplo crea tres columnas en un DataTable.The following example creates three columns in a DataTable. La segunda y tercera columnas contienen expresiones; la segunda calcula impuestos mediante un tipo impositivo variable y la tercera agrega el resultado del cálculo en el valor de la primera columna.The second and third columns contain expressions; the second calculates tax using a variable tax rate, and the third adds the result of the calculation to the value of the first column. La tabla resultante se muestra en un DataGrid control.The resulting table is displayed in a DataGrid control.

private void CalcColumns()
{
    DataTable table = new DataTable ();

    // Create the first column.
    DataColumn priceColumn = new DataColumn();
    priceColumn.DataType = System.Type.GetType("System.Decimal");
    priceColumn.ColumnName = "price";
    priceColumn.DefaultValue = 50;
     
    // Create the second, calculated, column.
    DataColumn taxColumn = new DataColumn();
    taxColumn.DataType = System.Type.GetType("System.Decimal");
    taxColumn.ColumnName = "tax";
    taxColumn.Expression = "price * 0.0862";
     
    // Create third column.
    DataColumn totalColumn = new DataColumn();
    totalColumn.DataType = System.Type.GetType("System.Decimal");
    totalColumn.ColumnName = "total";
    totalColumn.Expression = "price + tax";

    // Add columns to DataTable.
    table.Columns.Add(priceColumn);
    table.Columns.Add(taxColumn);
    table.Columns.Add(totalColumn);

    DataRow row = table.NewRow();
    table.Rows.Add(row);
    DataView view = new DataView(table);
    dataGrid1.DataSource = view;
}
Private Sub CalcColumns()
     Dim rate As Single = .0862
     dim table as DataTable = New DataTable 
 
     ' Create the first column.
     Dim priceColumn As DataColumn = New DataColumn
     With priceColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "price"
         .DefaultValue = 50
     End With
     
     ' Create the second, calculated, column.
     Dim taxColumn As DataColumn = New DataColumn
     With taxColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "tax"
         .Expression = "price * 0.0862"
     End With
     
    ' Create third column
     Dim totalColumn As DataColumn = New DataColumn
     With totalColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "total"
         .Expression = "price + tax"
     End With
 
     ' Add columns to DataTable
     With table.Columns
         .Add(priceColumn)
         .Add(taxColumn)
         .Add(totalColumn)
     End With
    
     Dim row As DataRow= table.NewRow
     table.Rows.Add(row)
     Dim view As New DataView
     view.Table = table
     DataGrid1.DataSource = view
 End Sub

Remarks

Un uso de la Expression propiedad consiste en crear columnas calculadas.One use of the Expression property is to create calculated columns. Por ejemplo, para calcular un valor de impuesto, el precio unitario se multiplica por el tipo impositivo de una región específica.For example, to calculate a tax value, the unit price is multiplied by a tax rate of a specific region. Dado que los tipos impositivos varían de una región a otra, sería imposible colocar un único tipo impositivo en una columna; en su lugar, el valor se calcula utilizando el Expression propiedad, como se muestra en el código de Visual Basic en la sección siguiente:Because tax rates vary from region to region, it would be impossible to put a single tax rate in a column; instead, the value is calculated using the Expression property, as shown in the Visual Basic code in the following section:

DataSet1.Tables("Products"). Columns("tax"). Expresión = "UnitPrice * 0,086"DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"

Un segundo uso es crear una columna agregada.A second use is to create an aggregate column. De forma similar a un valor calculado, un agregado realiza una operación basada en el conjunto completo de filas de la DataTable.Similar to a calculated value, an aggregate performs an operation based on the complete set of rows in the DataTable. Es un ejemplo sencillo contar el número de filas devueltas en el conjunto.A simple example is to count the number of rows returned in the set. Este es el método que se utilizaría para contar el número de transacciones completadas por un vendedor determinado, como se muestra en este código de Visual Basic:This is the method you would use to count the number of transactions completed by a particular salesperson, as shown in this Visual Basic code:

DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"  

Sintaxis de expresiónExpression Syntax

Cuando se crea una expresión, use el ColumnName propiedad para hacer referencia a columnas.When you create an expression, use the ColumnName property to refer to columns. Por ejemplo, si el ColumnName para una columna es "UnitPrice" y otro es "Quantity", la expresión sería como sigue:For example, if the ColumnName for one column is "UnitPrice", and another "Quantity", the expression would be as follows:

"UnitPrice * Quantity""UnitPrice * Quantity"

Nota

Si una columna se utiliza en una expresión, a continuación, la expresión se dice que tienen una dependencia en esa columna.If a column is used in an expression, then the expression is said to have a dependency on that column. Si se cambia el nombre o se quita una columna dependiente, no se produce ninguna excepción.If a dependent column is renamed or removed, no exception is thrown. Se producirá una excepción cuando se tiene acceso a la columna de expresión ahora interrumpida.An exception will be thrown when the now-broken expression column is accessed.

Cuando se crea una expresión para un filtro, incluya las cadenas entre comillas simples:When you create an expression for a filter, enclose strings with single quotation marks:

"LastName = 'Jones'""LastName = 'Jones'"

Si un nombre de columna contiene caracteres no alfanuméricos o comienza con un dígito o cualquiera de las palabras reservadas siguientes coincide (entre mayúsculas y minúsculas), requiere un tratamiento especial, como se describe en los párrafos siguientes.If a column name contains any non-alphanumeric characters or starts with a digit or matches (case-insensitively) any of the following reserved words, it requires special handling, as described in the following paragraphs.

YAnd

EntreBetween

SecundarioChild

FalseFalse

EnIn

EsIs

LikeLike

NotNot

NullNull

O bienOr

Elemento primarioParent

TrueTrue

Si un nombre de columna cumple una de las condiciones anteriores, se debe escribir entre corchetes o el "'" comillas (acento grave).If a column name satisfies one of the above conditions, it must be wrapped in either square brackets or the "`" (grave accent) quotes. Por ejemplo, para utilizar una columna denominada "Column #" en una expresión, se escribiría ya sea "[Column #]":For example, to use a column named "Column#" in an expression, you would write either "[Column#]":

Total * [Column #]Total * [Column#]

o "`Column #'":or "`Column#`":

Total * `columna #'Total * `Column#`

Si el nombre de columna se incluye entre corchetes, cualquier ']' y '\' caracteres (pero no cualquier otro carácter) en el se debe escapar anteponiendo con la barra diagonal inversa ("\") caracteres.If the column name is enclosed in square brackets then any ']' and '\' characters (but not any other characters) in it must be escaped by prepending them with the backslash ("\") character. Si el nombre de columna se encierra en caracteres de acento grave, a continuación, no debe contener ningún carácter de acento grave en ella.If the column name is enclosed in grave accent characters then it must not contain any grave accent characters in it. Por ejemplo, una columna denominada "[] columna\" se escribiría:For example, a column named "Column[]\" would be written:

Total * [columna [\]\\]Total * [Column[\]\\]

oor

Total * `Column]\</span><span class="sxs-lookup"><span data-stu-id="ddce8-310">Total \* \Column[]\`

Valores definidos por el usuarioUser-Defined Values

Dentro de las expresiones, se pueden usar valores definidos por el usuario que se comparará con los valores de columna.User-defined values may be used within expressions to be compared with column values. Los valores de cadena deben incluirse entre comillas simples (y cada carácter de comillas simples en un valor de cadena tiene que ser caracteres de escape anteponiendo por otro carácter de comillas simples).String values should be enclosed within single quotation marks (and each single quotation character in a string value has to be escaped by prepending it with another single quotation character). Los valores de fecha se deberían agregar dentro de los símbolos de libra esterlina (#) o comillas simples (') basándose en el proveedor de datos.Date values should be enclosed within pound signs (#) or single quotes (') based on the data provider. Decimales y notación científica están permitidos para los valores numéricos.Decimals and scientific notation are permissible for numeric values. Por ejemplo:For example:

"FirstName = 'John'""FirstName = 'John'"

"Precio < = 50,00""Price <= 50.00"

"Fecha de nacimiento < #1/31/82 #""Birthdate < #1/31/82#"

Las columnas que contienen valores de enumeración, convertir el valor al tipo de datos entero.For columns that contain enumeration values, cast the value to an integer data type. Por ejemplo:For example:

"EnumColumn = 5""EnumColumn = 5"

Analizar las expresiones literalesParsing Literal Expressions

Todas las expresiones literales se deben expresar en la configuración regional de la referencia cultural invariable.All literal expressions must be expressed in the invariant culture locale. Cuando DataSet analiza y convierte las expresiones literales, siempre usa la referencia cultural invariable, no la referencia cultural actual.When DataSet parses and converts literal expressions, it always uses the invariant culture, not the current culture.

Cuando hay comillas que rodean el valor, se identifican los literales de cadena.String literals are identified when there are single quotes surrounding the value. Por ejemplo:For example:

'John''John'

Boolean los literales son true y false; no están entre comillas en las expresiones.Boolean literals are true and false; they are not quoted in expressions.

Integer ¿literales [+-]? [0-9] + se tratan como System.Int32, System.Int64 o System.Double.Integer literals [+-]?[0-9]+ are treated as System.Int32, System.Int64 or System.Double. System.Double puede perder precisión dependiendo de lo grande que sea el número.System.Double can lose precision depending on how large the number is. Por ejemplo, si el número en el literal es 2147483650, DataSet primero intentará analizar el número como un Int32.For example, if the number in the literal is 2147483650, DataSet will first attempt to parse the number as an Int32. Esto no se realizará correctamente porque el número es demasiado grande.This will not succeed because the number is too large. En este caso DataSet analizará el número como un Int64, que se realizará correctamente.In this case DataSet will parse the number as an Int64, which will succeed. Si el literal era un número mayor que el valor máximo de Int64, DataSet analizará el literal usando Double.If the literal was a number larger than the maximum value of an Int64, DataSet will parse the literal using Double.

Literales reales que usan la notación científica, como 4.42372E-30, se analizan mediante System.Double.Real literals using scientific notation, such as 4.42372E-30, are parsed using System.Double.

Los literales reales sin la notación científica, pero con un separador decimal se tratan como System.Decimal.Real literals without scientific notation, but with a decimal point, are treated as System.Decimal. Si el número supera los valores máximo o mínimos admitidos por System.Decimal, a continuación, se analiza como un System.Double.If the number exceeds the maximum or minimum values supported by System.Decimal, then it is parsed as a System.Double. Por ejemplo:For example:

142526.144524 se convertirá en un Decimal.142526.144524 will be converted to a Decimal.

345262.78036719560925667 se tratará un Double.345262.78036719560925667 will be treated as a Double.

OperadoresOperators

Se permite la concatenación mediante booleanos AND, OR, operadores y NOT.Concatenation is allowed using Boolean AND, OR, and NOT operators. Puede usar paréntesis para agrupar cláusulas y forzar una precedencia.You can use parentheses to group clauses and force precedence. El operador AND tiene prioridad sobre otros operadores.The AND operator has precedence over other operators. Por ejemplo:For example:

(LastName = "Smith" o LastName = "Jones") Y FirstName = 'John'(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

Al crear expresiones de comparación, se permiten los siguientes operadores:When you create comparison expressions, the following operators are allowed:

<

<=

=

<>

=

ININ

LIKELIKE

También se admiten los siguientes operadores aritméticos en expresiones:The following arithmetic operators are also supported in expressions:

+ (suma)+ (addition)

- (resta)- (subtraction)

* (multiplicación)* (multiplication)

/ (división)/ (division)

% (módulo)% (modulus)

Operadores de cadenaString Operators

Para concatenar una cadena, use el carácter +.To concatenate a string, use the + character. El valor de la CaseSensitive propiedad de la DataSet clase determina si las comparaciones de cadenas distinguen mayúsculas de minúsculas.The value of the CaseSensitive property of the DataSet class determines whether string comparisons are case-sensitive. Sin embargo, puede invalidar ese valor con el CaseSensitive propiedad de la DataTable clase.However, you can override that value with the CaseSensitive property of the DataTable class.

Caracteres comodínWildcard Characters

Tanto el * y se puede usar indistintamente % caracteres comodín en una comparación LIKE.Both the * and % can be used interchangeably for wildcard characters in a LIKE comparison. Si la cadena en una cláusula LIKE contiene un * o %, dichos caracteres deben escribirse entre corchetes ([]).If the string in a LIKE clause contains a * or %, those characters should be enclosed in brackets ([]). Si es un corchete de cierre en la cláusula, cada carácter de paréntesis debe ir entre corchetes (por ejemplo, [[] o []]).If a bracket is in the clause, each bracket character should be enclosed in brackets (for example [[] or []]). Se permite un carácter comodín al principio y al final de un modelo, o al final de un modelo o al principio de un patrón.A wildcard is allowed at the start and end of a pattern, or at the end of a pattern, or at the start of a pattern. Por ejemplo:For example:

"Nombreartículo como ' * producto*'""ItemName LIKE '*product*'"

"Nombreartículo como ' * producto '""ItemName LIKE '*product'"

"Nombreartículo LIKE 'producto *'""ItemName LIKE 'product*'"

No se permiten caracteres comodín en el medio de una cadena.Wildcard characters are not allowed in the middle of a string. Por ejemplo, ' te * xt' no está permitido.For example, 'te*xt' is not allowed.

Referencia a relaciones de elementos primarios y secundariosParent/Child Relation Referencing

Puede hacer referencia a una tabla primaria en una expresión anteponiendo el nombre de columna con Parent.A parent table may be referenced in an expression by prepending the column name with Parent. Por ejemplo, el Parent.Price hace referencia a la columna de la tabla primaria denominada Price.For example, the Parent.Price references the parent table's column named Price.

Cuando un elemento secundario tiene más de una fila primaria, utilice Parent (RelationName). ColumnName.When a child has more than one parent row, use Parent(RelationName).ColumnName. Por ejemplo, el Parent (RelationName). Precio hace referencia a la columna de la tabla primaria denominada Price a través de la relación.For example, the Parent(RelationName).Price references the parent table’s column named Price via the relation.

Puede hacer referencia a una columna en una tabla secundaria en una expresión anteponiendo el nombre de columna con Child.A column in a child table may be referenced in an expression by prepending the column name with Child. Sin embargo, dado que las relaciones secundarias pueden devolver varias filas, debe incluir la referencia a la columna secundaria en una función de agregado.However, because child relationships may return multiple rows, you must include the reference to the child column in an aggregate function. Por ejemplo, Sum(Child.Price) devolvería la suma de la columna denominada Price en la tabla secundaria.For example, Sum(Child.Price) would return the sum of the column named Price in the child table.

Si una tabla tiene más de un elemento secundario, la sintaxis es: Child(RelationName).If a table has more than one child, the syntax is: Child(RelationName). Por ejemplo, si una tabla tiene dos tablas secundarias denominadas Customers y Ordersy el DataRelation se denomina objeto Customers2Orders, la referencia sería como sigue:For example, if a table has two child tables named Customers and Orders, and the DataRelation object is named Customers2Orders, the reference would be as follows:

AVG(Child(Customers2Orders). Cantidad)Avg(Child(Customers2Orders).Quantity)

AgregadosAggregates

Se admiten los siguientes tipos agregados:The following aggregate types are supported:

Suma (Sum)Sum (Sum)

Promedio (Media)Avg (Average)

Min (mínimo)Min (Minimum)

Max (máximo)Max (Maximum)

Count (recuento)Count (Count)

StDev (desviación estadística estándar)StDev (Statistical standard deviation)

Var (varianza estadística).Var (Statistical variance).

Agregados se realizan normalmente en las relaciones.Aggregates are ordinarily performed along relationships. Crear una expresión de agregado mediante una de las funciones enumeradas anteriormente y una columna de la tabla secundaria, como se detalla en el elemento primario/secundario relación hace referencia a que se ha analizado anteriormente.Create an aggregate expression by using one of the functions listed earlier and a child table column as detailed in Parent/Child Relation Referencing that was discussed earlier. Por ejemplo:For example:

AVG(Child.price)Avg(Child.Price)

AVG(Child(Orders2Details). Precio)Avg(Child(Orders2Details).Price)

Un agregado también se puede realizar en una sola tabla.An aggregate can also be performed on a single table. Por ejemplo, para crear un resumen de las figuras de una columna denominada "Price":For example, to create a summary of figures in a column named "Price":

Sum(Precio)Sum(Price)

Nota

Si usa una sola tabla para crear una función de agregado, no habrá ninguna funcionalidad de agrupación.If you use a single table to create an aggregate, there would be no group-by functionality. En su lugar, todas las filas mostraría el mismo valor en la columna.Instead, all rows would display the same value in the column.

Si una tabla no tiene filas, las funciones de agregado devolverá null.If a table has no rows, the aggregate functions will return null.

Tipos de datos siempre se pueden determinar examinando el DataType propiedad de una columna.Data types can always be determined by examining the DataType property of a column. También puede convertir a tipos de datos mediante la función Convert, que se muestra en la sección siguiente.You can also convert data types using the Convert function, shown in the following section.

Solo se puede aplicar un agregado a una sola columna y no hay otras expresiones se pueden usar dentro del agregado.An aggregate can only be applied to a single column and no other expressions can be used inside the aggregate.

FuncionesFunctions

También se admiten las siguientes funciones:The following functions are also supported:

CONVERT

DescripciónDescription Convierte una expresión concreta para los tipos de .NET Framework especificado.Converts particular expression to a specified .NET Framework Type.
SintaxisSyntax Convertir (expression, type)Convert(expression, type)
ArgumentosArguments expression --La expresión para convertir.expression -- The expression to convert.

type --El tipo de .NET Framework a la que se convertirá el valor.type -- The .NET Framework type to which the value will be converted.

Ejemplo: myDataColumn (total, 'System.Int32') "Example: myDataColumn.Expression="Convert(total, 'System.Int32')"

Todas las conversiones son válidas con las siguientes excepciones: Boolean puede convertirse a y desde Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String y sí solo.All conversions are valid with the following exceptions: Boolean can be coerced to and from Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String and itself only. Char se puede convertir a y desde Int32, UInt32, Stringy sí solo.Char can be coerced to and from Int32, UInt32, String, and itself only. DateTime se puede convertir a y desde String y sí solo.DateTime can be coerced to and from String and itself only. TimeSpan se puede convertir a y desde String y sí solo.TimeSpan can be coerced to and from String and itself only.

LEN

DescripciónDescription Obtiene la longitud de una cadenaGets the length of a string
SintaxisSyntax LEN (expression)LEN(expression)
ArgumentosArguments expression --La cadena que se va a evaluar.expression -- The string to be evaluated.

Ejemplo: myDataColumn "Example: myDataColumn.Expression="Len(ItemName)"

ISNULL

DescripciónDescription Comprueba una expresión y devuelve la expresión comprobada o un valor de reemplazo.Checks an expression and either returns the checked expression or a replacement value.
SintaxisSyntax ISNULL (expression, replacementvalue)ISNULL(expression, replacementvalue)
ArgumentosArguments expression --La expresión para comprobar.expression -- The expression to check.

replacementvalue --Si la expresión es null, replacementvalue se devuelve.replacementvalue -- If expression is null, replacementvalue is returned.

Ejemplo: myDataColumn (price, -1) "Example: myDataColumn.Expression="IsNull(price, -1)"

IIF

DescripciónDescription Obtiene uno de dos valores según el resultado de una expresión lógica.Gets one of two values depending on the result of a logical expression.
SintaxisSyntax IIF (expr, truepart, falsepart)IIF(expr, truepart, falsepart)
ArgumentosArguments expr --La expresión para evaluar.expr -- The expression to evaluate.

truepart --El valor para devolver si la expresión es true.truepart -- The value to return if the expression is true.

falsepart --El valor para devolver si la expresión es false.falsepart -- The value to return if the expression is false.

Ejemplo: myDataColumn.Expression = "IIF (total > 1000, 'cara', 'dear')Example: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

TRIM

DescripciónDescription Quita todos los iniciales y finales en blanco caracteres como \r, \n, \t, ' 'Removes all leading and trailing blank characters like \r, \n, \t, ' '
SintaxisSyntax TRIM (expression)TRIM(expression)
ArgumentosArguments expression : Expresión recortar.expression -- The expression to trim.

SUBSTRING

DescripciónDescription Obtiene una subcadena de una longitud especificada, comenzando en un punto especificado en la cadena.Gets a sub-string of a specified length, starting at a specified point in the string.
SintaxisSyntax SUBSTRING (expression, start, length)SUBSTRING(expression, start, length)
ArgumentosArguments expression --La cadena de origen para la subcadena.expression -- The source string for the substring.

start : Entero que especifica dónde comienza la subcadena.start -- Integer that specifies where the substring starts.

length : Entero que especifica la longitud de la subcadena.length -- Integer that specifies the length of the substring.

Ejemplo: myDataColumn.Expression = "SUBSTRING (teléfono, 7, 8)"Example: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

Nota

Puede restablecer el Expression propiedad asignando un valor nulo o cadena vacía.You can reset the Expression property by assigning it a null value or empty string. Si se establece un valor predeterminado en la columna de expresión, todas las filas rellenadas previamente se asignan el valor predeterminado después de la Expression se restablece la propiedad.If a default value is set on the expression column, all previously filled rows are assigned the default value after the Expression property is reset.

Applies to

See Also