Udostępnij za pośrednictwem


Porady: filtrowanie wyników zapytania przy użyciu LINQ (Visual Basic)

Language-Integrated Query (LINQ) ułatwia uzyskiwanie dostępu do informacji o bazie danych i wykonywanie zapytań.

W poniższym przykładzie pokazano, jak utworzyć nową aplikację wykonującą zapytania względem bazy danych programu SQL Server i filtrować wyniki według określonej wartości przy użyciu klauzuli Where. Aby uzyskać więcej informacji, zobacz Where Clause.

Przykłady w tym artykule korzystają z przykładowej bazy danych Northwind. Aby uzyskać bazę danych, zobacz Pobieranie przykładowych baz danych.

Notatka

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby utworzyć połączenie z bazą danych

  1. W programie Visual Studio otwórz Eksploratora serwera Server Explorer/Database Explorer, klikając pozycję Server Explorer/Database Explorer w menu Widok .

  2. Kliknij prawym przyciskiem myszy na Połączenia danych w Eksploratorze serwera /Eksplorator bazy danych, a następnie kliknij Dodaj połączenie.

  3. Określ prawidłowe połączenie z przykładową bazą danych Northwind.

Aby dodać projekt zawierający plik LINQ to SQL

  1. W programie Visual Studio w menu Plik wskaż polecenie Nowy, a następnie kliknij pozycję Projekt. Wybierz pozycję Visual Basic Aplikacja Windows Forms jako typ projektu.

  2. W menu projektu kliknij pozycję Dodaj nowy element. Wybierz szablon elementu LINQ to SQL Classes.

  3. Nadaj plikowi nazwę northwind.dbml. Kliknij pozycję Dodaj. Otwiera się projektant relacyjny obiektu (O/R Designer) dla pliku northwind.dbml.

Aby dodać tabele do wykonywania zapytań do projektanta O/R

  1. W Eksploratorze serwera /Eksplorator bazy danych, rozwiń połączenie z bazą danych Northwind. Rozwiń folder Tables.

    Jeśli Projektant O/R został zamknięty, możesz go ponownie otworzyć, klikając dwukrotnie plik northwind.dbml, który dodałeś wcześniej.

  2. Kliknij tabelę Customers (Klienci) i przeciągnij ją do lewego okienka projektanta. Kliknij tabelę Orders (Zamówienia) i przeciągnij ją do lewego okienka projektanta.

    Projektant tworzy nowe obiekty Customer i Order dla projektu. Zwróć uwagę, że projektant automatycznie wykrywa relacje między tabelami i tworzy właściwości podrzędne dla powiązanych obiektów. Na przykład funkcja IntelliSense pokaże, że obiekt Customer ma właściwość Orders dla wszystkich zamówień powiązanych z tym klientem.

  3. Zapisz zmiany i zamknij edytor.

  4. Zapisz projekt.

Aby dodać kod, który wysyła zapytanie do bazy danych i wyświetla wyniki

  1. Z przybornikaprzeciągnij kontrolkę DataGridView na domyślny formularz systemu Windows dla projektu Form1.

  2. Kliknij dwukrotnie formularz Form1, aby dodać kod do zdarzenia Load formularza.

  3. Po dodaniu tabel do narzędzia projektowania O/R, narzędzie dodało obiekt DataContext do twojego projektu. Ten obiekt zawiera kod, który musisz mieć, aby uzyskać dostęp do tych tabel, a także indywidualne obiekty i kolekcje dla każdej tabeli. Obiekt DataContext dla projektu jest nazwany na podstawie nazwy pliku dbml. W tym projekcie obiekt DataContext ma nazwę northwindDataContext.

    Możesz utworzyć wystąpienie DataContext w kodzie i wykonać zapytanie o tabele określone przez projektanta O/R.

    Dodaj następujący kod do zdarzenia Load, aby wysłać zapytanie do tabel, które są uwidocznione jako właściwości kontekstu danych. Zapytanie filtruje wyniki i zwraca tylko klientów znajdujących się w 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. Naciśnij F5, aby uruchomić projekt i wyświetlić wyniki.

  5. Poniżej przedstawiono kilka innych filtrów, które można wypróbować.

    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
    

Zobacz też