Udostępnij za pośrednictwem


Jak: Zliczać, sumować lub obliczać średnią danych 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ę, która wykonuje zapytania względem bazy danych programu SQL Server. Próbka zlicza, sumuje i oblicza średnie wyników przy użyciu klauzul Aggregate i Group By. Aby uzyskać więcej informacji, zobacz Aggregate Clause i Group By 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 Eksplorator serwera Server Explorer/Database Explorer, klikając Eksplorator serwera /Eksploratora baz danych w menu Widok .

  2. Kliknij prawym przyciskiem myszy połączenia danych w Eksploratorze Server Explorer/Database Explorer, a następnie kliknij przycisk 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. Projektant relacyjny obiektu (O/R Designer) jest otwarty dla pliku northwind.dbml.

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

  1. W eksploratorze serwera /Eksploratora baz danychrozwiń połączenie z bazą danych Northwind. Rozwiń folder Tables.

    Jeśli edytor projektów O/R został zamknięty, możesz go ponownie otworzyć, klikając dwukrotnie dodany wcześniej plik northwind.dbml.

  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 do wysłania zapytania w bazie danych i wyświetlenia wyników

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

  2. Aby dodać kod do zdarzenia Load Formularza Form1, kliknij go dwukrotnie.

  3. Gdy dodałeś tabele do Projektanta O/R, projektant dodał obiekt DataContext do twojego projektu. Ten obiekt zawiera kod, który musisz mieć, aby uzyskać dostęp do tych tabel, oraz dostęp do poszczególnych obiektów i kolekcji 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 zapytać tabele, które są udostępnione jako właściwości DataContext, i zliczać, sumować oraz obliczać średnią wyników. W przykładzie użyto klauzuli Aggregate, aby wysłać zapytanie o pojedynczy wynik, a klauzula Group By pokazuje średnią dla pogrupowanych wyników.

    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. Naciśnij F5, aby uruchomić projekt i wyświetlić wyniki.

Zobacz też