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


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

Обновлен: Ноябрь 2007

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

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

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

Bb918069.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Из панели элементов перетащите элемент управления DataGridView в заданную по умолчанию форму Windows Form для проекта (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, чтобы запустить проект и просмотреть результаты.

См. также

Задачи

Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)

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

Методы DataContext (реляционный конструктор объектов)

Ссылки

Статистическое предложение (Visual Basic)

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

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

LINQ в Visual Basic

Запросы (Visual Basic)

LINQ to SQL