Procedura: ordinare i risultati di query utilizzando LINQ (Visual Basic)

Con LINQ (Language Integrated Query) è possibile accedere più facilmente alle informazioni sul database ed eseguire query.

L'esempio seguente illustra come creare una nuova applicazione che esegue query su un database di SQL Server e ordina i risultati in base a più campi usando la clausola Order By. L'ordinamento per ogni campo può essere crescente o decrescente. Per altre informazioni, vedere Clausola Order By.

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. Fare clic sulla tabella Orders e trascinarla nel riquadro sinistro della finestra di progettazione.

    La finestra di progettazione crea nuovi oggetti Customer e Order per il progetto. Si noti che la finestra di progettazione rileva automaticamente le relazioni tra le tabelle e crea proprietà figlio per gli oggetti correlati. Ad esempio, IntelliSense mostrerà che l'oggetto Customer include una proprietà Orders per tutti gli ordini correlati a tale cliente.

  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 Windows Form predefinito per il progetto, Form1.

  2. Fare doppio clic su Form1 per aggiungere codice all'evento Load del modulo.

  3. 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.

    Aggiungere il codice seguente all'evento Load per eseguire query sulle tabelle esposte come proprietà del contesto dei dati e ordinare i risultati. La query ordina i risultati in base al numero di ordini cliente, in ordine decrescente. I clienti con lo stesso numero di ordini vengono ordinati in base al nome della società in ordine crescente (impostazione predefinita).

    Dim db As New northwindDataContext
    
    Dim q = From cust In db.Customers
            Where cust.Orders.Count > 0
            Select cust.CustomerID, cust.CompanyName,
                   OrderCount = cust.Orders.Count, cust.Country
            Order By OrderCount Descending, CompanyName
    
    DataGridView1.DataSource = q
    
  4. Premere F5 per eseguire il progetto e visualizzare i risultati.

Vedi anche