Практическое руководство. Поиск минимального или максимального значения в результатах запроса с помощью LINQ (Visual Basic)
Обновлен: Ноябрь 2007
Запросы, интегрированные в язык программирования (Language-Integrated Query, LINQ), упрощают доступ к содержимому базы данных и обеспечивают выполнение запросов.
В следующем примере демонстрируется создание нового приложения, выполняющего запросы к базе данных SQL Server. В примере определяются минимальное и максимальное значения для результатов с помощью предложений Aggregate и Group By. Дополнительные сведения см. в разделах Статистическое предложение (Visual Basic) и Предложение Group By (Visual Basic).
В примерах этого раздела используется учебная база данных "Борей". Если учебная база данных "Борей" отсутствует на компьютере разработчика, ее можно загрузить с веб-узла центра загрузки Майкрософт. Инструкции см. в разделе Загрузка образцов баз данных (LINQ to SQL).
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Создание подключения к базе данных
В Visual Studio откройте обозреватель серверов или обозреватель баз данных. Для этого в меню Вид выберите пункт Обозреватель серверов или Обозреватель баз данных.
В представлении Обозреватель серверов или Обозреватель баз данных щелкните правой кнопкой мыши Подключения данных, а затем выберите пункт Добавить подключение.
Укажите допустимое подключение к учебной базе данных "Борей".
Добавление в файл SQL проекта, содержащего LINQ
В Visual Studio в меню Файл, наведите указатель на пунктСоздать и выберите Проект. Выберите Приложение Windows Forms в качестве типа проекта Visual Basic.
В меню Проект выберите команду Добавить новый элемент. Выберите шаблон элемента Классы преобразования языка LINQ в язык SQL.
Назовите файл northwind.dbml. Нажмите кнопку Добавить. Откроется реляционный конструктор объектов для файла northwind.dbml.
Добавление таблицы к запросу в реляционном конструкторе объектов
В представлении Обозреватель серверов или Обозреватель баз данных разверните подключение к базе данных "Борей". Разверните папку Таблицы.
Если реляционный конструктор объектов закрыт, откройте его снова, дважды щелкнув файл northwind.dbml, добавленный ранее.
Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора. Щелкните таблицу "Заказы" и перетащите ее в левую область конструктора.
В конструкторе создаются новые объекты Customer и Order для проекта. Обратите внимание, что конструктор автоматически обнаруживает связи между таблицами и создает дочерние свойства для связанных объектов. Например, функция IntelliSense покажет, что в объекте Customer имеется свойство Orders для всех заказов, связанных с клиентом.
Сохраните изменения и закройте конструктор.
Сохраните проект.
Добавление кода в запрос к базе данных и отображение результатов
Из панели элементов перетащите элемент управления DataGridView в заданную по умолчанию форму Windows Form для проекта (Form1).
Дважды щелкните Form1, чтобы добавить код в событие Load формы.
При добавлении таблиц в реляционный конструктор объектов конструктор добавляет объект DataContext в проект. Этот объект содержит код, необходимый для доступа к этим таблицам, в дополнение к отдельным объектам и коллекциям для каждой таблицы. Объекту DataContext для проекта присвоено имя на основе имени файла .dbml. Для данного проекта объект DataContext называется northwindDataContext.
Можно создать экземпляр DataContext в коде и запросить таблицы, указанные реляционным конструктором объектов.
Добавьте следующий код в событие Load. Этот код запрашивает таблицы, которые предоставляются как свойства в контексте данных, и определяет минимальные и максимальные значения для результатов. Пример использует предложение Aggregate для запроса одного результата и предложение Group By для отображения среднего значения для сгруппированных результатов.
Dim db As New northwindDataContext Dim minimumOrders = Aggregate cust In db.Customers _ Where cust.City = "London" _ Into Min(cust.Orders.Count) MsgBox("Minimum Orders from a London Customer: " & minimumOrders) Dim maximumOrdersByCountry = From cust In db.Customers _ Group By cust.Country _ Into MaxOrders = Max(cust.Orders.Count) DataGridView1.DataSource = maximumOrdersByCountry
Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.
См. также
Задачи
Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)
Основные понятия
Методы DataContext (реляционный конструктор объектов)