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 DataSet typé lors de l’utilisation de LINQ to DataSet. Un DataSet typé est dérivé d’un 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 DataSet typé 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 sur un DataSet typé. Avec un DataSet typé, vous n’avez pas besoin d’utiliser la méthode générique Field ou la méthode SetField pour accéder aux données des colonnes. Les noms des propriétés sont disponibles au moment de la compilation, car les informations de type sont incluses dans le DataSet. LINQ to DataSet donne accès aux valeurs des colonnes avec le type approprié, ce qui fait que les erreurs d’incompatibilité des types sont interceptées non pas à l’exécution, mais dès la compilation.

Avant de procéder à l’interrogation d’un DataSet typé, vous devez générer la classe en utilisant le 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