Dela via


Gör så här: Filtrera frågeresultat med hjälp av LINQ (Visual Basic)

Language-Integrated Query (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 och filtrerar resultatet efter ett visst värde med hjälp av satsen Where. Mer information finns i Where Clause.

Exemplen i den här artikeln använder Northwind-exempeldatabasen. Information om hur du hämtar databasen finns i Hämta exempeldatabaser.

Anteckning

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 Anpassning av 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 Explorer på menyn View.

  2. Högerklicka på Dataanslutningar i Server Explorer/Database Explorer och klicka sedan på Lägg till anslutning.

  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 menyn Arkiv, pekar på Ny och klickar sedan på Projekt. Välj Visual Basic Windows Forms Application som projekttyp.

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

  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 Explorerexpanderar du anslutningen till Northwind-databasen. Öppna mappen Tables.

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

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 Toolboxtill standardformuläret för ditt projekt, Form1.

  2. Dubbelklicka på Form1 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 dessa tabeller, förutom enskilda objekt och samlingar för varje tabell. Det DataContext objektet för projektet namnges baserat på namnet på .dbml-filen. För det här projektet heter DataContext-objektet northwindDataContext.

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

    Lägg till följande kod i händelsen Load för att köra frågor mot de tabeller som exponeras som egenskaper för din datakontext. Frågan filtrerar resultatet och returnerar endast kunder som finns i London.

    Dim db As New northwindDataContext
    
    Dim customers_London = From cust In db.Customers
                           Where cust.City = "London"
                           Select cust.CustomerID, cust.CompanyName,
                                  OrderCount = cust.Orders.Count,
                                  cust.City, cust.Country
    
    DataGridView1.DataSource = customers_London
    
  4. Tryck på F5 för att köra projektet och visa resultatet.

  5. Följande är några andra filter som du kan prova.

    Dim companies_H = From cust In db.Customers
                      Where cust.Orders.Count > 0 And
                            cust.CompanyName.StartsWith("H")
                      Select cust.CustomerID, cust.CompanyName,
                             OrderCount = cust.Orders.Count,
                             cust.Country
    
    Dim customers_USA = From cust In db.Customers
                        Where cust.Orders.Count > 15 And
                              cust.Country = "USA"
                        Select cust.CustomerID, cust.CompanyName,
                               OrderCount = cust.Orders.Count,
                               cust.Country
    

Se även