Postupy: Počet, suma nebo průměr dat pomocí LINQ (Visual Basic)

Jazykově integrovaný dotaz (LINQ) usnadňuje přístup k informacím o databázi a spouštění dotazů.

Následující příklad ukazuje, jak vytvořit novou aplikaci, která provádí dotazy na databázi SQL Serveru. Vzorek spočítá, součet a průměruje výsledky pomocí Aggregate klauzulí a Group By klauzulí. Další informace naleznete v tématu Agregační klauzule a klauzule Group By.

Příklady v tomto tématu používají ukázkovou databázi Northwind. Pokud tuto databázi nemáte na vývojovém počítači, můžete ji stáhnout z webu Stažení softwaru společnosti Microsoft. Pokyny najdete v tématu Stažení ukázkových databází.

Poznámka:

Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.

Vytvoření připojení k databázi

  1. V sadě Visual Studio otevřete Průzkumníka databáze Průzkumníka/serveru kliknutím na Průzkumníka databáze serveru/v nabídce Zobrazit.

  2. Klepněte pravým tlačítkem myši data Připojení ion v Průzkumníku/ databáze serveru a potom klepněte na tlačítko Přidat Připojení ion.

  3. Zadejte platné připojení k ukázkové databázi Northwind.

Přidání projektu, který obsahuje soubor LINQ to SQL

  1. V sadě Visual Studio v nabídce Soubor přejděte na příkaz Nový a klepněte na příkaz Projekt. Jako typ projektu vyberte Visual Basic model Windows Forms Application.

  2. V nabídce Projekt klepněte na tlačítko Přidat novou položku. Vyberte šablonu položky třídy LINQ to SQL.

  3. Pojmenujte soubor northwind.dbml. Klikněte na tlačítko Přidat. Pro soubor northwind.dbml se otevře Návrhář relací objektů (Návrhář relací objektů).

Přidání tabulek pro dotaz do Návrháře relací objektů

  1. V Průzkumníku databáze Serveru/ rozbalte připojení k databázi Northwind. Rozbalte složku Tabulky.

    Pokud jste návrhář relací zavřeli, můžete ho znovu otevřít poklikáním na soubor northwind.dbml, který jste přidali dříve.

  2. Klikněte na tabulku Zákazníci a přetáhněte ji do levého podokna návrháře. Klikněte na tabulku Objednávky a přetáhněte ji do levého podokna návrháře.

    Návrhář pro váš projekt vytvoří nové Customer objekty a Order objekty. Všimněte si, že návrhář automaticky rozpozná relace mezi tabulkami a vytvoří podřízené vlastnosti pro související objekty. IntelliSense například zobrazí, že Customer objekt má Orders vlastnost pro všechny objednávky související s tímto zákazníkem.

  3. Uložte změny a zavřete návrháře.

  4. Uložte projekt.

Přidání kódu pro dotazování databáze a zobrazení výsledků

  1. Z panelu nástrojů přetáhněte DataGridView ovládací prvek na výchozí formulář Windows Form pro váš projekt Form1.

  2. Poklikáním na form1 přidejte kód do Load události formuláře.

  3. Po přidání tabulek do Návrháře relací objektů přidal návrhář DataContext objekt pro váš projekt. Tento objekt obsahuje kód, který musíte mít pro přístup k těmto tabulkám, a pro přístup k jednotlivým objektům a kolekcím pro každou tabulku. Objekt DataContext projektu je pojmenován na základě názvu souboru .dbml. Pro tento projekt DataContext je objekt pojmenován northwindDataContext.

    Můžete vytvořit instanci DataContext kódu a dotazovat se na tabulky určené Návrhářem relací objektů.

    Přidejte do Load události následující kód pro dotazování tabulek, které jsou vystavené jako vlastnosti vašich DataContext a počtu, součtu a průměru výsledků. Ukázka používá klauzuli Aggregate k dotazování na jeden výsledek a Group By klauzule zobrazí průměr pro seskupené výsledky.

    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. Stisknutím klávesy F5 spusťte projekt a zobrazte výsledky.

Viz také