Partager via


Interrogation de DataSets typés

Si le schéma du DataSet est connu au moment du design 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, événements et 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, voir DataSets typés (ADO.NET).

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 de colonne. Les noms de propriétés sont disponibles au moment de la compilation parce que les informations de type sont incluses dans le DataSet. LINQ to DataSet donne accès aux valeurs de colonne avec le type approprié, ce qui fait que les erreurs d'incompatibilité de 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 à l'aide du Concepteur de DataSet dans Visual Studio 2008. Pour plus d'informations, voir Comment : créer un groupe de données typé.

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

Concepts

Interrogation de DataSets (LINQ to DataSet)

Requêtes d'analyse croisée (LINQ to DataSet)

Requêtes d'analyse unique (LINQ to DataSet)