Procedura: Conteggio, somma o Media di dati utilizzando LINQ (Visual Basic)How to: Count, Sum, or Average Data by Using LINQ (Visual Basic)

Language-Integrated Query (LINQ) semplifica accedere alle informazioni sul database ed eseguire query.Language-Integrated Query (LINQ) makes it easy to access database information and execute queries.

Nell'esempio seguente viene illustrato come creare una nuova applicazione che esegue query su un database di SQL Server.The following example shows how to create a new application that performs queries against a SQL Server database. L'esempio conta, calcola la somma e la media dei risultati usando il Aggregate e Group By clausole.The sample counts, sums, and averages the results by using the Aggregate and Group By clauses. Per altre informazioni, vedere Aggregate Clause e Group By Clause.For more information, see Aggregate Clause and Group By Clause.

Gli esempi in questo argomento usano il database di esempio Northwind.The examples in this topic use the Northwind sample database. Se non è questo database nel computer di sviluppo, è possibile scaricarlo da Microsoft Download Center.If you do not have this database on your development computer, you can download it from the Microsoft Download Center. Per istruzioni, vedere download dei database di esempio.For instructions, see Downloading Sample Databases.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

Per creare una connessione a un databaseTo create a connection to a database

  1. In Visual Studio, aprire Esplora Server/Database Explorer facendo Esplora Server/Database Esplora nella visualizzazione menu.In Visual Studio, open Server Explorer/Database Explorer by clicking Server Explorer/Database Explorer on the View menu.

  2. Fare doppio clic su connessioni dati nelle Esplora Server/Esplora Database e quindi fare clic su Aggiungi connessione.Right-click Data Connections in Server Explorer/Database Explorer and then click Add Connection.

  3. Specificare una connessione valida al database di esempio Northwind.Specify a valid connection to the Northwind sample database.

Per aggiungere un progetto che contiene un file LINQ to SQLTo add a project that contains a LINQ to SQL file

  1. In Visual Studio scegliere Nuovo dal menu File e quindi fare clic su Progetto.In Visual Studio, on the File menu, point to New and then click Project. Selezionare Visual Basic Windows Forms Application come tipo di progetto.Select Visual Basic Windows Forms Application as the project type.

  2. Nel menu Progetto fare clic su Aggiungi nuovo elemento.On the Project menu, click Add New Item. Selezionare il classi LINQ to SQL modello di elemento.Select the LINQ to SQL Classes item template.

  3. Denominare il file northwind.dbml.Name the file northwind.dbml. Fare clic su Aggiungi.Click Add. Viene aperto il Object Relational Designer (O/R Designer) per il file Northwind. dbml.The Object Relational Designer (O/R Designer) is opened for the northwind.dbml file.

Per aggiungere tabelle a query a O/R DesignerTo add tables to query to the O/R Designer

  1. Nelle Esplora Server/Esplora Database, espandere la connessione al database Northwind.In Server Explorer/Database Explorer, expand the connection to the Northwind database. Espandere la tabelle cartella.Expand the Tables folder.

    Se è stato chiuso O/R Designer, è possibile riaprirlo facendo doppio clic sul file Northwind. dbml aggiunti in precedenza.If you have closed the O/R Designer, you can reopen it by double-clicking the northwind.dbml file that you added earlier.

  2. Fare clic nella tabella Customers e trascinarla nel riquadro sinistro della finestra di progettazione.Click the Customers table and drag it to the left pane of the designer. Fare clic nella tabella Orders e trascinarla nel riquadro sinistro della finestra di progettazione.Click the Orders table and drag it to the left pane of the designer.

    La finestra di progettazione crea nuovi Customer e Order oggetti per il progetto.The designer creates new Customer and Order objects for your project. Si noti che la finestra di progettazione automaticamente rileva le relazioni tra le tabelle e crea figlio le proprietà per gli oggetti correlati.Notice that the designer automatically detects relationships between the tables and creates child properties for related objects. Ad esempio, IntelliSense mostrerà che il Customer oggetto ha un Orders proprietà per tutti gli ordini correlati a tale cliente.For example, IntelliSense will show that the Customer object has an Orders property for all orders related to that customer.

  3. Salvare le modifiche e chiudere la finestra di progettazione.Save your changes and close the designer.

  4. Salvare il progetto.Save your project.

Per aggiungere il codice per eseguire query sul database e visualizzare i risultatiTo add code to query the database and display the results

  1. Dal casella degli strumenti, trascinare un DataGridView controllo nel Form di Windows predefinito per il progetto, Form1.From the Toolbox, drag a DataGridView control onto the default Windows Form for your project, Form1.

  2. Fare doppio clic su Form1 per aggiungere il codice per il Load eventi del form.Double-click Form1 to add code to the Load event of the form.

  3. Quando si aggiungono tabelle alla finestra di Progettazione relazionale oggetti, la finestra di progettazione aggiunge un DataContext oggetto per il progetto.When you added tables to the O/R Designer, the designer added a DataContext object for your project. Questo oggetto contiene il codice che è necessario disporre per accedere a tali tabelle e per accedere ai singoli oggetti e raccolte per ogni tabella.This object contains the code that you must have to access those tables, and to access individual objects and collections for each table. Il DataContext oggetto per il progetto viene denominato in base al nome del file. dbml.The DataContext object for your project is named based on the name of your .dbml file. Per questo progetto, il DataContext oggetto è denominato northwindDataContext.For this project, the DataContext object is named northwindDataContext.

    È possibile creare un'istanza di DataContext nel codice e query nelle tabelle specificate dalla finestra di Progettazione relazionale oggetti.You can create an instance of the DataContext in your code and query the tables specified by the O/R Designer.

    Aggiungere il codice seguente per il Load eventi per eseguire query su tabelle che vengono esposti come proprietà del DataContext conteggio, somma e Media dei risultati.Add the following code to the Load event to query the tables that are exposed as properties of your DataContext and count, sum, and average the results. L'esempio Usa la Aggregate clausola per eseguire query per un singolo risultato e il Group By clausola per visualizzare una media dei risultati raggruppati.The sample uses the Aggregate clause to query for a single result, and the Group By clause to show an average for grouped results.

    Dim db As New northwindDataContext
    Dim msg = ""
    
    Dim londonCustomerCount = Aggregate cust In db.Customers
                              Where cust.City = "London"
                              Into Count()
    msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf
    
    Dim averageOrderCount = Aggregate cust In db.Customers
                            Where cust.City = "London"
                            Into Average(cust.Orders.Count)
    msg &= "Average number of Orders per customer: " &
           averageOrderCount & vbCrLf
    
    Dim venezuelaTotalOrders = Aggregate cust In db.Customers
                               Where cust.Country = "Venezuela"
                               Into Sum(cust.Orders.Count)
    msg &= "Total number of orders from Customers in Venezuela: " &
           venezuelaTotalOrders & vbCrLf
    
    MsgBox(msg)
    
    Dim averageCustomersByCity = From cust In db.Customers
                                 Group By cust.City
                                 Into Average(cust.Orders.Count)
                                 Order By Average
    
    DataGridView1.DataSource = averageCustomersByCity
    
    'Another way to grab the count and sum
    
    londonCustomerCount = (From cust in db.Customers
                            Where cust.City = "London").Count()
    
    venezuelaTotalOrders = (From cust in db.Customers
                                Where cust.Country = "Venezuela"
                                Select cust.Orders).Sum()
    
  4. Premere F5 per eseguire il progetto e visualizzare i risultati.Press F5 to run your project and view the results.

Vedere ancheSee also