Interroger des DataSets typés

Si le schéma du DataSet est connu au moment de la conception de l’application, nous vous recommandons d’utiliser un typé DataSet lors de l’utilisation de LINQ to DataSet. Un typé DataSet est une classe qui dérive de DataSet . De ce fait, il hérite de l'ensemble des méthodes, événements et propriétés d'un DataSet. En outre, un typé DataSet fournit des méthodes, des événements et des propriétés fortement typés. Cela signifie que vous pouvez accéder à des tables et à des colonnes par leur nom au lieu d’utiliser les méthodes associées à des collections. Cela rend les requêtes plus simples et plus lisibles. Pour plus d’informations, consultez DataSets typés.

LINQ to DataSet prend également en charge l’interrogation d’un typé DataSet . Avec un typé DataSet , il n’est pas nécessaire d’utiliser la méthode ou méthode générique Field SetField pour accéder aux données de la colonne. Les noms de propriété sont disponibles au moment de la compilation, car les informations de type sont incluses dans le DataSet . LINQ to DataSet permet d’accéder aux valeurs de colonne comme type correct, afin que les erreurs d’incompatibilité de type soient interceptées lorsque le code est compilé au lieu de au moment de l’exécution.

Avant de pouvoir commencer à interroger un typé DataSet , vous devez générer la classe à l’aide du Concepteur de DataSet dans Visual Studio. Pour plus d’informations, consultez créer et configurer des datasets.

Exemple

L'exemple suivant montre une requête sur un DataSet typé :

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

Voir aussi