Sdílet prostřednictvím


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

Language-Integrated Query (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á, sečte a průměruje výsledky pomocí klauzulí Aggregate a Group By. Další informace naleznete v části Agregační klauzule a klauzule GROUP BY.

Příklady v tomto článku používají ukázkovou databázi Northwind. Pokud chcete získat databázi, přečtěte si téma Stažení ukázkových databází..

Poznámka

Počítač může v následujících pokynech zobrazit různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Edice sady Visual Studio, kterou máte, a nastavení, která používáte, určují tyto prvky. Další informace najdete v tématu Přizpůsobeníintegrovaného vývojového prostředí (IDE).

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

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

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

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

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

  1. V prostředí Visual Studio v nabídce soubor zvolte Nový a potom klikněte na Projekt. Jako typ projektu vyberte Visual Basic Windows Forms Application.

  2. V nabídce Project klikněte na Přidat novou položku. Vyberte šablonu položky Třídy LINQ to SQL.

  3. Pojmenujte soubor northwind.dbml. Klikněte na Přidat. Objektový relační návrhář (O/R Designer) je otevřen pro soubor northwind.dbml.

Přidat tabulky do dotazu v Návrháři O/R relací

  1. V Průzkumník serveru/Průzkumník databází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 designéru. 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 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 objekt Customer má vlastnost Orders 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. Ze Panelu nástrojůpřetáhněte ovládací prvek DataGridView do výchozího formuláře Windows Form pro váš projekt Form1.

  2. Poklepáním na Form1 přidáte kód do události Load formuláře.

  3. Když jste přidali tabulky do Návrháře O/R, návrhář přidal objekt DataContext 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 pro váš projekt je pojmenován na základě názvu souboru .dbml. Pro tento projekt má objekt DataContext název northwindDataContext.

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

    Do události Load přidejte následující kód pro dotazování tabulek, které jsou dostupné jako vlastnosti DataContext a pro zpracování operací počítání, sčítání a průměrování výsledků. Ukázka používá klauzuli Aggregate k dotazování na jeden výsledek a klauzule Group By k zobrazení průměru seskupených výsledků.

    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é