Практическое руководство. Выполнение над данными функций Count, Sum и Average с помощью LINQ (Visual Basic)

Интегрированный с языком запрос (LINQ) упрощает доступ к сведениям о базе данных и выполнении запросов.

В следующем примере показано, как создать приложение, которое выполняет запросы к базе данных SQL Server. Выборка счетчиков, сумм и средних результатов с помощью Aggregate предложений и Group By предложений. Дополнительные сведения см. в разделе "Статистическое предложение " и "Группирование по предложению".

В примерах в этом разделе используется пример базы данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных".

Примечание.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Создание подключения к базе данных

  1. В Visual Studio откройте Обозреватель Server Обозреватель Database, щелкнув сервер Обозреватель// Database Обозреватель в меню "Вид".

  2. Щелкните правой кнопкой мыши Подключение данных в Обозреватель Server Обозреватель/ Database, а затем нажмите кнопку "Добавить Подключение".

  3. Укажите допустимое подключение к образцу базы данных Northwind.

Добавление проекта, содержащего файл LINQ to SQL

  1. В меню Файл окна Visual Studio наведите указатель мыши на пункт Создать и щелкните Проект. Выберите приложение Visual Basic Windows Forms в качестве типа проекта.

  2. В меню Проект выберите Добавить новый элемент. Выберите шаблон элемента классов LINQ to SQL.

  3. Назовите файл northwind.dbml. Нажмите кнопку Добавить. Откроется реляционный конструктор объектов (конструктор O/R) для файла northwind.dbml.

Добавление таблиц для запроса в конструктор операций ввода-вывода или R

  1. В Обозреватель Server Обозреватель/ Database разверните подключение к базе данных Northwind. Разверните папку Таблицы.

    Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув файл northwind.dbml, который вы добавили ранее.

  2. Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора. Щелкните таблицу "Заказы" и перетащите ее в левую область конструктора.

    Конструктор создает новые Customer и Order объекты для проекта. Обратите внимание, что конструктор автоматически обнаруживает связи между таблицами и создает дочерние свойства для связанных объектов. Например, IntelliSense покажет, что Customer объект имеет свойство для всех заказов, связанных с этим клиентом Orders .

  3. Сохраните изменения и закройте конструктор.

  4. Сохраните проект.

Добавление кода для запроса к базе данных и отображение результатов

  1. На панели элементов перетащите DataGridView элемент управления в форму Windows Form по умолчанию для проекта Form1.

  2. Дважды щелкните Form1, чтобы добавить код в Load событие формы.

  3. При добавлении таблиц в конструктор O/R конструктор конструктор добавил DataContext объект для проекта. Этот объект содержит код, который необходимо получить для доступа к этим таблицам, а также для доступа к отдельным объектам и коллекциям для каждой таблицы. Объект DataContext проекта называется на основе имени DBML-файла. Для этого проекта DataContext объект называется northwindDataContext.

    Вы можете создать экземпляр DataContext кода и запросить таблицы, указанные конструктором O/R.

    Добавьте следующий код в Load событие, чтобы запросить таблицы, предоставляемые как свойства ваших DataContext и счетчиков, сумм и среднее значение результатов. В примере используется Aggregate предложение для запроса к одному результату, а Group By предложение отображает среднее значение для сгруппированных результатов.

    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. Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.

См. также