Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/03/2008, 13:57
Avatar de Peterpay
Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Re: Operaciones Soportadas en el Método DataTable.Select()

Un pequeño extracto de MSDN

del metodo DataTable.Select(filterExpression);

Para formar el argumento filterExpression, utilice las mismas reglas que para crear el valor de la propiedad Expression de la clase DataColumn.


Cita:
Sintaxis de las expresiones
Cuando cree una expresión, utilice la propiedad ColumnName ( es valido para el filtro del select) para hacer referencia a las columnas. Por ejemplo, si la propiedad ColumnName para una columna es "UnitPrice" y para otra "Quantity", la expresión será:

"UnitPrice * Quantity"

Nota
Si en una expresión se utiliza una columna, se dice que la expresión tiene una dependencia de esa columna. Cuando se cambia el nombre o se quita la columna de la que depende la expresión, no se inicia ninguna excepción. Pero se producirá una excepción cuando se obtenga acceso a la columna de la expresión ahora interrumpida.


Al crear una expresión para un filtro, las cadenas se deben escribir entre comillas sencillas:

"LastName = 'Jones'"

Los caracteres siguientes son especiales y se deben establecer como secuencias de escape (como se explica ahora) si se van a utilizar en un nombre de columna:

\n (nueva línea)

\t (tabulación)

\r (retorno de carro)

~

(

)

#

\

/

=

>

<

+

-

*

%

&

|

^

'

"

[

]

Si un nombre de columna contiene uno de los caracteres anteriores, el nombre se debe incluir entre corchetes. Por ejemplo, para utilizar una columna denominada "Column#" en una expresión, se deberá escribir "[Column#]":

Total * [Column#]

Puesto que los corchetes son caracteres especiales, se debe utilizar una barra diagonal ("\") para crear un carácter de escape para el corchete, si forma parte de un nombre de columna. Por ejemplo, una columna denominada "Column[]" se escribirá:

Total * [Column[\]]

Sólo se debe crear un carácter de escape para el segundo corchete.

VALORES DEFINIDOS POR EL USUARIO

Los valores definidos por el usuario se pueden utilizar en expresiones para compararlos con valores de columnas. Los valores de cadena se deben escribir entre comillas sencillas. Los valores de fecha se deben poner entre símbolos de libra esterlina (#). Se permiten decimales y notaciones científicas para los valores numéricos. Por ejemplo:

"FirstName = 'John'"

"Price <= 50.00"

"Birthdate < #31/1/82#"

Para las columnas que contienen valores de enumeración, el valor se convierte en un tipo de datos entero. Por ejemplo:

"EnumColumn = 5"

OPERADORES

Se permite la concatenación mediante operadores booleanos AND, OR y NOT. Se pueden utilizar paréntesis para agrupar cláusulas y forzar una precedencia. El operador AND tiene precedencia sobre otros operadores. Por ejemplo:

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

Al crear expresiones de comparación, se permiten los siguientes operadores:

<

>

<=

>=

<>

=

IN

LIKE

También se admiten los siguientes operadores aritméticos en las expresiones:

+ (suma)

- (resta)

* (multiplicación)

/ (división)

% (módulo)

OPERADORES DE CADENA

Para concatenar una cadena se utiliza el carácter +. El valor de la propiedad CaseSensitive de la clase DataSet determina si en las comparaciones de cadenas se distingue entre mayúsculas y minúsculas. Sin embargo, se puede reemplazar ese valor por la propiedad CaseSensitive de la clase DataTable.

CARACTERES COMODÍN

Tanto * como % se pueden utilizar indistintamente como caracteres comodín en una comparación LIKE. Si la cadena de una cláusula LIKE contiene un carácter * o %, dichos caracteres se deben establecer como caracteres de escape entre corchetes ([]). Si hay un corchete en la cláusula, los caracteres de corchete se deben establecer como caracteres de escape entre corchetes (por ejemplo, [[] o []]). Se permite un carácter comodín al comienzo y al final de un modelo, al final de un modelo o bien al comienzo de un modelo. Por ejemplo:

"ItemName LIKE '*product*'"

"ItemName LIKE '*product'"

"ItemName LIKE 'product*'"

No se permiten los caracteres comodín en mitad de una cadena. Por ejemplo, no se admite 'te*xt'.

REFERENCIA A RELACIONES PRIMARIAS Y SECUNDARIAS

Se puede hacer una referencia a una tabla primaria en una expresión anteponiendo Parent al nombre de la columna. Por ejemplo, Parent.Price hace referencia a la columna denominada Price de la tabla primaria.

Se puede hacer referencia a una columna de una tabla secundaria en una expresión anteponiendo Child al nombre de la columna. Sin embargo, dado que las relaciones secundarias pueden devolver varias filas, se debe incluir la referencia a la columna secundaria en una función de agregado. Por ejemplo, Sum(Child.Price) devolvería la suma de la columna denominada Price de la tabla secundaria.

Si una tabla tiene varias tablas secundarias, la sintaxis es: Child(RelationName). Por ejemplo, si una tabla tiene dos tablas secundarias denominadas Customers y Orders, y el objeto DataRelation se denomina Customers2Orders, la referencia sería la siguiente:

Avg(Child(Customers2Orders).Quantity)

AGREGADOS

Se admiten los siguientes tipos de agregados:

Sum (Suma)

Avg (Promedio)

Min (Mínimo)

Max (Máximo)

Count (Recuento)

StDev (Desviación estadística estándar)

Var (Varianza estadística).

Normalmente los agregados se llevan a cabo en las relaciones. Cree una expresión de agregado mediante una de las funciones enumeradas anteriormente y una columna de una tabla secundaria, como se describe en el apartado REFERENCIA A RELACIONES PRIMARIAS Y SECUNDARIAS que se ha analizado anteriormente. Por ejemplo:

Avg(Child.Price)

Avg(Child(Orders2Details).Price)

Un agregado también se puede realizar en una sola tabla. Por ejemplo, para crear un resumen de cifras de una columna denominada "Price":

Sum(Price)

Nota
Si se utiliza una sola tabla para crear un agregado, no habrá ninguna funcionalidad de agrupación. En su lugar, todas las filas mostrarán el mismo valor en la columna.


Si una tabla no tiene filas, las funciones de agregado devolverán referencia de objeto null (Nothing en Visual Basic).

Los tipos de datos siempre se pueden determinar mediante el examen de la propiedad DataType de una columna. También se pueden convertir los tipos de datos mediante la función Convert, como se muestra en la siguiente sección.

FUNCTIONS

También se admiten las funciones siguientes:

CONVERT

Descripción
Convierte una expresión concreta en un tipo de .NET Framework especificado.

Sintaxis
Convert( expression, type )

Argumentos
expression: expresión que se va a convertir.

type: tipo de .NET Framework al que se convertirá el valor.


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

Todas las conversiones son válidas con las siguientes excepciones: Boolean sólo se puede convertir en y desde Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String y él mismo. Char sólo se puede convertir en y desde Int32, UInt32, String y él mismo. DateTime sólo se puede convertir en y desde String y él mismo. TimeSpan sólo se puede convertir en y desde String y él mismo.

LEN

Descripción
Obtiene la longitud de una cadena.

Sintaxis
LEN( expression )

Argumentos
expression: cadena que se va a evaluar.


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

ISNULL

Descripción
Comprueba una expresión y devuelve la expresión comprobada o un valor de sustitución.

Sintaxis
ISNULL( expression, replacementvalue )

Argumentos
expression: expresión que se va a comprobar.

replacementvalue: si la expresión es referencia de objeto null (Nothing en Visual Basic), se devuelve replacementvalue.


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

IIF

Descripción
Obtiene uno de entre dos valores, dependiendo del resultado de una expresión lógica.

Sintaxis
IIF( expr, truepart, falsepart )

Argumentos
expr: expresión que se va a evaluar.

truepart: valor que se devolverá si la expresión es true.

falsepart: valor que se devolverá si la expresión es false.


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

TRIM

Descripción
Quita todos los caracteres en blanco iniciales y finales, como \r, \n, \t, ' '.

Sintaxis
TRIM( expression )

Argumentos
expression: expresión que se va a recortar.


SUBSTRING

Descripción
Obtiene una subcadena de una longitud especificada, empezando por un punto concreto de la cadena.

Sintaxis
SUBSTRING(expression, start, length)

Argumentos
expression: cadena de origen para la subcadena.

start: entero que especifica dónde comienza la subcadena.

length: entero que especifica la longitud de la subcadena.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5