Consulta de conjuntos de dados tipados

Se o esquema do DataSet for conhecido no tempo de design do aplicativo, recomendamos usar um DataSet tipado ao usar o LINQ to DataSet. Um DataSet tipado é uma classe derivada de um DataSet. Como tal, herda todos os métodos, eventos e propriedades de um DataSet. Além disso, um DataSet tipado fornece métodos, eventos e propriedades fortemente tipados. Isso significa que você pode acessar tabelas e colunas pelo nome, em vez de usar métodos baseados em coleção. Isso torna as consultas mais simples e mais legíveis. Para obter mais informações, consulte Conjuntos de dados tipados.

LINQ to DataSet também dá suporte à consulta por meio de um DataSet tipado. Com um DataSet tipado, você não precisa usar o método genérico Field ou o método SetField para acessar dados de coluna. Os nomes de propriedades estão disponíveis no momento da compilação porque as informações de tipo estão incluídas no DataSet. LINQ to DataSet fornece acesso aos valores de coluna como o tipo correto, de modo que erros de correspondência de tipos sejam vistos quando o código é compilado, ao invés de só no tempo de execução.

Para que você possa começar a consultar um DataSet tipado, você deve gerar a classe usando o Designer de Conjunto de Dados no Visual Studio. Para obter mais informações, consulte Criar e configurar conjuntos de dados.

Exemplo

O exemplo a seguir mostra uma consulta sobre um DataSet tipado:

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

Confira também