Compartir a través de


Conjuntos de datos con tipo de consulta

Si el esquema de DataSet se conoce en tiempo de diseño de la aplicación, se recomienda usar un DataSet tipado al usar LINQ to DataSet. Un DataSet con tipo es una clase que se deriva de un DataSet. Por lo tanto, hereda todos los métodos, eventos y propiedades de .DataSet Además, un DataSet con tipo proporciona métodos, eventos y propiedades fuertemente tipados. Esto significa que puede tener acceso a tablas y columnas por nombre, en lugar de usar métodos basados en colecciones. Esto hace que las consultas sea más sencillas y legibles. Para obtener más información, vea Conjunto de datos con tipo.

LINQ to DataSet también admite la consulta a través de un objeto con tipo DataSet. Con un tipo DataSet, no es necesario usar el método genérico Field ni el método SetField para acceder a los datos de columna. Los nombres de propiedad están disponibles en tiempo de compilación porque la información de tipo se incluye en el DataSet. LINQ to DataSet proporciona acceso a los valores de columna como el tipo correcto, de modo que los errores de coincidencia de tipos se detectan cuando el código se compila en lugar de en tiempo de ejecución.

Antes de poder empezar a consultar un DataSet con tipo se debe generar la clase usando el Diseñador de DataSet de Visual Studio. Para obtener más información, consulte Creación y configuración de conjuntos de datos.

Ejemplo

En el siguiente ejemplo se muestra una consulta sobre un DataSet con tipo:

var query = from o in orders
            where o.OnlineOrderFlag == true
            select new { o.SalesOrderID,
                         o.OrderDate,
                         o.SalesOrderNumber };

foreach(var order in query)
{
    Console.WriteLine("{0}\t{1:d}\t{2}",
      order.SalesOrderID,
      order.OrderDate,
      order.SalesOrderNumber);
}
Dim orders = ds.Tables("SalesOrderHeader")

Dim query = _
       From o In orders _
       Where o.OnlineOrderFlag = True _
       Select New {SalesOrderID := o.SalesOrderID, _
                   OrderDate := o.OrderDate, _
                   SalesOrderNumber := o.SalesOrderNumber}

For Each Dim onlineOrder In query
 Console.WriteLine("{0}\t{1:d}\t{2}", _
 onlineOrder.SalesOrderID, _
 onlineOrder.OrderDate, _
 onlineOrder.SalesOrderNumber)
Next

Consulte también