Dela via


Så här gör du: Antal, Summa eller Genomsnittliga data med HJÄLP av LINQ (Visual Basic)

Språkintegrerad fråga (LINQ) gör det enkelt att komma åt databasinformation och köra frågor.

I följande exempel visas hur du skapar ett nytt program som utför frågor mot en SQL Server-databas. Exemplet räknar, summerar och medelvärder resultatet med hjälp av satserna Aggregate och Group By . Mer information finns i Aggregerad sats och Gruppera efter-sats.

Exemplen i det här avsnittet använder Northwind-exempeldatabasen. Om du inte har den här databasen på utvecklingsdatorn kan du ladda ned den från Microsoft Download Center. Anvisningar finns i Ladda ned exempeldatabaser.

Kommentar

Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.

Så här skapar du en anslutning till en databas

  1. Öppna Server Explorer/Database Explorer i Visual Studio genom att klicka på Server Explorer/Database Explorermenyn Visa.

  2. Högerklicka på Data Anslut ions i Server Explorer/Database Explorer och klicka sedan på Lägg till Anslut ion.

  3. Ange en giltig anslutning till Northwind-exempeldatabasen.

Så här lägger du till ett projekt som innehåller en LINQ till SQL-fil

  1. I Visual Studio går du till Arkiv-menyn, pekar på Ny och klickar sedan på Projekt. Välj Visual Basic Windows Forms Application som projekttyp.

  2. På Projekt-menyn klickar du på Lägg till nytt objekt. Välj objektmallen LINQ till SQL-klasser .

  3. Ge filen namnet northwind.dbml. Klicka på Lägg till. Objektrelationsdesignern (O/R Designer) öppnas för filen northwind.dbml.

Så här lägger du till tabeller i frågan i O/R Designer

  1. I Server Explorer/Database Explorer expanderar du anslutningen till Northwind-databasen. Expandera mappen Tabeller.

    Om du har stängt O/R Designer kan du öppna den igen genom att dubbelklicka på filen northwind.dbml som du lade till tidigare.

  2. Klicka på tabellen Kunder och dra den till den vänstra rutan i designern. Klicka på tabellen Beställningar och dra den till den vänstra rutan i designern.

    Designern skapar nya Customer objekt och Order objekt för projektet. Observera att designern automatiskt identifierar relationer mellan tabellerna och skapar underordnade egenskaper för relaterade objekt. IntelliSense visar till exempel att Customer objektet har en Orders egenskap för alla beställningar som är relaterade till kunden.

  3. Spara ändringarna och stäng designern.

  4. Spara ditt projekt.

Så här lägger du till kod för att köra frågor mot databasen och visa resultatet

  1. Dra en DataGridView kontroll från verktygslådan till standardformuläret för ditt projekt, Form1.

  2. Dubbelklicka på Formulär1 för att lägga till kod i Load händelsen i formuläret.

  3. När du lade till tabeller i O/R Designer lade designern till ett DataContext objekt för projektet. Det här objektet innehåller den kod som du måste ha för att komma åt tabellerna och för att få åtkomst till enskilda objekt och samlingar för varje tabell. Objektet DataContext för projektet namnges baserat på namnet på .dbml-filen. För det här projektet DataContext heter northwindDataContextobjektet .

    Du kan skapa en instans av DataContext i koden och köra frågor mot tabellerna som anges av O/R Designer.

    Lägg till följande kod i Load händelsen för att fråga de tabeller som exponeras som egenskaper för dina DataContext och räkna, summera och medelvärdet av resultaten. Exemplet använder Aggregate -satsen för att fråga efter ett enda resultat och Group By -satsen för att visa ett genomsnitt för grupperade resultat.

    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. Tryck på F5 för att köra projektet och visa resultatet.

Se även