Procedura: restituire un risultato di query LINQ come tipo specifico (Visual Basic)

Con LINQ (Language Integrated Query) è possibile accedere più facilmente alle informazioni sul database ed eseguire query. Per impostazione predefinita, le query LINQ restituiscono un elenco di oggetti come tipo anonimo. È anche possibile specificare che una query restituisce un elenco di un tipo specifico usando la clausola Select.

L'esempio seguente illustra come creare una nuova applicazione che esegue query su un database di SQL Server e proietta i risultati come un tipo denominato specifico. Per altre informazioni, vedere Tipi anonimi e Clausola Select.

Negli esempi riportati in questo argomento viene usato il database di esempio Northwind. Se questo database non è presente nel computer di sviluppo, è possibile scaricarlo dall' Area download Microsoft. Per istruzioni, vedere Download di database di esempio.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.

Per creare una connessione a un database

  1. In Visual Studio aprire Esplora server/Esplora database facendo clic su Esplora server/Esplora database nel menu Visualizza.

  2. Fare clic con il pulsante destro del mouse su Connessioni dati in Esplora server/Esplora database e quindi fare clic su Aggiungi connessione.

  3. Specificare una connessione valida al database di esempio Northwind.

Per aggiungere un progetto contenente un file LINQ to SQL

  1. In Visual Studio scegliere Nuovo dal menu File e quindi fare clic su Progetto. Selezionare Windows Forms Application di Visual Basic come tipo di progetto.

  2. Dal menu Progetto fare clic su Aggiungi nuovo elemento. Selezionare il modello di elemento Classi LINQ to SQL.

  3. Denominare il file northwind.dbml. Fare clic su Aggiungi. Verrà aperto Object Relational Designer per il file northwind.dbml.

Per aggiungere tabelle per eseguire query in Object Relational Designer

  1. In Esplora server/Esplora database espandere la connessione al database Northwind. Espandere la cartella Tabelle .

    Se Object Relational Designer è stato chiuso, è possibile riaprirlo facendo doppio clic sul file northwind.dbml aggiunto in precedenza.

  2. Fare clic sulla tabella Customers e trascinarla nel riquadro sinistro della finestra di progettazione.

    La finestra di progettazione crea un nuovo oggetto Customer per il progetto. È possibile proiettare un risultato di query come tipo Customer o come tipo che si crea. In questo esempio verrà creato un nuovo tipo in una routine successiva e verrà proiettato un risultato della query come tale tipo.

  3. Salvare le modifiche e chiudere la finestra di progettazione.

  4. Salvare il progetto.

Per aggiungere codice per eseguire query sul database e visualizzare i risultati

  1. Dalla casella degli strumenti trascinare un controllo DataGridView nel modulo Windows Form predefinito per il progetto, Form1.

  2. Fare doppio clic su Form1 per modificare la classe Form1.

  3. Dopo l'istruzione End Class della classe Form1, aggiungere il codice seguente per creare un tipo CustomerInfo per contenere i risultati della query per questo esempio.

    Public Class CustomerInfo
        Public Property CompanyName As String
        Public Property ContactName As String
    End Class
    
  4. Quando sono state aggiunte tabelle a Object Relational Designer, la finestra di progettazione ha aggiunto un oggetto DataContext al progetto. Questo oggetto contiene il codice necessario per accedere a tali tabelle, oltre a singoli oggetti e raccolte per ogni tabella. All'oggetto DataContext per il progetto viene assegnato un nome basato su quello del file con estensione dbml. Per questo progetto il nome dell'oggetto DataContext è northwindDataContext.

    È possibile creare un'istanza di DataContext nel codice ed eseguire query sulle tabelle specificate da Object Relational Designer.

    Nell'evento Load della classe Form1 aggiungere il codice seguente per eseguire query sulle tabelle esposte come proprietà del contesto dei dati. La clausola Select della query creerà un nuovo tipo CustomerInfo anziché un tipo anonimo per ogni elemento del risultato della query.

    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. Premere F5 per eseguire il progetto e visualizzare i risultati.

Vedi anche