Postupy: Filtrování výsledků dotazu 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 a filtruje výsledky podle konkrétní hodnoty pomocí Where klauzule. Další informace naleznete v tématu Where – klauzule.

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. Otevře se Návrhář relací objektů (Návrhář relací objektů) pro soubor northwind.dbml.

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, kromě jednotlivých objektů a kolekcí 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ů.

    Do události přidejte následující kód Load pro dotazování tabulek, které jsou vystavené jako vlastnosti kontextu dat. Dotaz vyfiltruje výsledky a vrátí pouze zákazníky, kteří jsou umístěni v 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. Stisknutím klávesy F5 spusťte projekt a zobrazte výsledky.

  5. Následuje několik dalších filtrů, které můžete vyzkoušet.

    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
    

Viz také