Udostępnij za pośrednictwem


Porady: zliczanie, sumowanie, lub uśrednianie danych za pomocą LINQ (Visual Basic)

Zapytanie zintegrowane z językiem (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. Przykładowe liczby, sumy i średnie wyników przy użyciu Aggregate klauzul i Group By . Aby uzyskać więcej informacji, zobacz Agregacja klauzuli i Klauzula Grupuj według.

W przykładach w tym temacie użyto przykładowej bazy danych Northwind. Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z Centrum pobierania Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby utworzyć połączenie z bazą danych

  1. W programie Visual Studio otwórz Eksploratora baz danych Eksploratora/serwera, klikając Eksploratora baz danych Eksploratora/serwera w menu Widok.

  2. Kliknij prawym przyciskiem myszy pozycję Połączenie ions danych w Eksploratorze baz danych Eksploratora/ serwera, a następnie kliknij polecenie Dodaj Połączenie ion.

  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ę Aplikacja formularzy systemu Windows w języku Visual Basic jako typ projektu.

  2. W menu Project (Projekt) kliknij pozycję Add New Item (Dodaj nowy element). Wybierz szablon elementu KLASY LINQ to SQL.

  3. Nazwij plik northwind.dbml. Kliknij przycisk Dodaj. Dla pliku northwind.dbml jest otwierana Projektant relacyjna (O/R Projektant).

Aby dodać tabele do zapytania do Projektant O/R

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

    Jeśli zamknięto Projektant O/R, 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 Customer obiekty 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 Customer obiekt ma Orders właściwość dla wszystkich zamówień powiązanych z tym klientem.

  3. Zapisz zmiany i zamknij projektanta.

  4. Zapisz projekt.

Aby dodać kod, aby wysłać zapytanie do bazy danych i wyświetlić wyniki

  1. Z przybornika przeciągnij kontrolkę DataGridView do domyślnego formularza systemu Windows dla projektu Form1.

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

  3. Po dodaniu tabel do Projektant O/R projektant dodał DataContext obiekt dla projektu. Ten obiekt zawiera kod, który musi mieć dostęp do tych tabel, oraz aby uzyskać dostęp do poszczególnych obiektów i kolekcji dla każdej tabeli. DataContext Obiekt projektu ma nazwę na podstawie nazwy pliku dbml. W tym projekcie DataContext obiekt ma nazwę northwindDataContext.

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

    Dodaj następujący kod do zdarzenia, aby wysłać zapytanie do Load tabel, które są uwidocznione jako właściwości DataContext właściwości i count, sum i average wyników. W przykładzie użyto klauzuli Aggregate , aby utworzyć zapytanie dotyczące pojedynczego wyniku, oraz Group By klauzulę , aby wyświetlić ś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 klawisz F5, aby uruchomić projekt i wyświetlić wyniki.

Zobacz też