Comment : retourner un résultat de requête LINQ en tant que type spécifique (Visual Basic)

La requête intégrée en langage (LINQ) permet d’accéder facilement aux informations de base de données et d’exécuter des requêtes. Par défaut, les requêtes LINQ retournent une liste d’objets sous la forme d’un type anonyme. Vous pouvez également spécifier qu’une requête retourne une liste d’un type spécifique à l’aide de la clause Select .

L’exemple suivant montre comment créer une application qui exécute des requêtes sur une base de données SQL Server et projette les résultats sous la forme d’un type nommé spécifique. Pour plus d’informations, consultez Types anonymes et Sélectionner une clause.

Les exemples de cette rubrique utilisent l’exemple de base de données Northwind. Si cette base de données n’est pas disponible sur votre ordinateur de développement, vous pouvez la télécharger à partir du Centre de téléchargement Microsoft. Pour obtenir des instructions, consultez Téléchargement d’exemples de bases de données.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnalisation de l’IDE.

Pour créer une connexion à une base de données

  1. Dans Visual Studio, ouvrez Explorateur de serveurs/Explorateur de bases de données en cliquant sur Explorateur de serveurs/Explorateur de bases de données dans le menu Affichage .

  2. Cliquez avec le bouton droit sur Connexions de données dans Explorateur de serveurs/Explorateur de bases de données, puis cliquez sur Ajouter une connexion.

  3. Spécifiez une connexion valide à l’exemple de base de données Northwind.

Pour ajouter un projet qui contient un fichier LINQ to SQL

  1. Dans Visual Studio, dans le menu Fichier,pointez sur Nouveau, puis cliquez sur Projet. Sélectionnez Application Windows Forms Visual Basic comme type de projet.

  2. Dans le menu Projet , cliquez sur Ajouter un nouvel élément. Sélectionnez le modèle d’élément Classes LINQ to SQL.

  3. Nommez le fichier northwind.dbml. Cliquez sur Add. Le Concepteur relationnel objet (Concepteur O/R) est ouvert pour le fichier northwind.dbml.

Pour ajouter des tables à interroger au Concepteur O/R

  1. Dans Explorateur de serveurs/Explorateur de bases de données, développez la connexion à la base de données Northwind. Développez le dossier Tables .

    Si vous avez fermé le concepteur objet relationnel, vous pouvez le rouvrir en double-cliquant sur le fichier northwind.dbml que vous avez ajouté précédemment.

  2. Cliquez sur le tableau Clients et faites-le glisser vers le volet gauche du concepteur.

    Le concepteur crée un objet Customer pour votre projet. Vous pouvez projeter un résultat de requête en tant que type Customer ou en tant que type que vous créez. Cet exemple créera un nouveau type dans une procédure ultérieure et projettera un résultat de requête en tant que ce type.

  3. Enregistrez vos modifications et fermez le fichier.

  4. Enregistrez votre projet.

Pour ajouter du code pour interroger la base de données et afficher les résultats

  1. À partir de la boîte à outils, faites glisser un contrôle DataGridView sur le Windows Form par défaut pour votre projet, Form1.

  2. Double-cliquez sur Form1 pour modifier la classe Form1.

  3. Après l’instruction End Class de la classe Form1, ajoutez le code suivant pour créer un type CustomerInfo contenant les résultats de la requête pour cet exemple.

    Public Class CustomerInfo
        Public Property CompanyName As String
        Public Property ContactName As String
    End Class
    
  4. Lorsque vous avez ajouté des tables au concepteur objet relationnel, ce dernier a ajouté un objet DataContext pour votre projet. Cet objet contient le code que vous devez avoir à accéder à ces tables et à accéder à des objets et collections individuels pour chaque table. L’objet DataContext de votre projet est nommé en fonction du nom de votre fichier .dbml. Pour ce projet, l’objet DataContext est nommé northwindDataContext.

    Vous pouvez créer une instance du DataContext dans votre code et interroger les tables spécifiées par le concepteur O/R.

    Dans Load l'événement de la classe Form1, ajoutez le code suivant pour interroger les tables qui sont exposées en tant que propriétés de votre contexte de données. La clause Select de la requête crée un nouveau type CustomerInfo au lieu d’un type anonyme pour chaque élément du résultat de la requête.

    Dim db As New northwindDataContext
    
    Dim customerList =
      From cust In db.Customers
      Where cust.CompanyName.StartsWith("L")
      Select New CustomerInfo With {.CompanyName = cust.CompanyName,
                                    .ContactName = cust.ContactName}
    
    DataGridView1.DataSource = customerList
    
  5. Appuyez sur F5 pour exécuter votre projet et afficher les résultats.

Voir aussi