Поделиться через


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

Запросы, интегрированные в язык программирования (Language-Integrated Query, LINQ), упрощают доступ к содержимому базы данных и обеспечивают выполнение запросов.

В следующем примере демонстрируется создание нового приложения, выполняющего запросы к базе данных SQL Server.Пример подсчитывает, суммирует и усредняет результаты с помощью предложений Aggregate и Group By.Дополнительные сведения см. в разделах Предложение Aggregate (Visual Basic) и Предложение Group By (Visual Basic).

В примерах этого раздела используется учебная база данных "Борей".При отсутствии учебной базы данных "Борей" на компьютере разработчика ее можно загрузить с веб-узла Центра загрузки Майкрософт.Подробные инструкции см. в разделе Downloading Sample Databases (LINQ to SQL).

ПримечаниеПримечание

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

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

  1. В Visual Studio откройте обозреватель серверов или обозреватель баз данных. Для этого в меню Вид выберите пункт Обозреватель серверов или Обозреватель баз данных.

  2. В обозревателе серверов или обозревателе баз данных щелкните правой кнопкой мыши Подключения данных, а затем выберите команду Добавить подключение.

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

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

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

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

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

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

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

    Если реляционный конструктор объектов закрыт, откройте его снова, дважды щелкнув файл northwind.dbml, который был добавлен ранее.

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

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

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

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

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

  1. С панели элементов перетащите элемент управления DataGridView в заданную по умолчанию форму Windows Forms для проекта (Form1).

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

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

    Можно создать экземпляр DataContext в коде и запросить таблицы, указанные реляционным конструктором объектов.

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

См. также

Задачи

Walkthrough: Creating LINQ to SQL Classes (O/R Designer)

Ссылки

Предложение Aggregate (Visual Basic)

Предложение Group By (Visual Basic)

Основные понятия

DataContext Methods (O/R Designer)

Другие ресурсы

LINQ в Visual Basic

Запросы (Visual Basic)

LINQ to SQL