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 con tipo al utilizar LINQ to DataSet. Un DataSet con tipo es una clase que se deriva de un DataSet. Como tal, hereda todos los métodos, eventos y propiedades de un DataSet. Además, un DataSet con tipo proporciona métodos, eventos y propiedades fuertemente tipados. Esto significa que se puede tener acceso a tablas y columnas por su nombre, en lugar de utilizar métodos de una colección. Esto hace que las consultas sean más sencillas y más 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 DataSet con tipo no hay que usar el método Field genérico o el método SetField para tener acceso a los datos de la columna. Los nombres de propiedad están disponibles en tiempo de compilación porque la información de tipo se incluye en DataSet. LINQ to DataSet proporciona acceso a los valores de las columnas con el tipo correcto para que los errores de coincidencia con el tipo se detecten cuando se compile el código en lugar de en la 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, vea Crear y configurar 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