Практическое руководство. Сортировка результатов запроса с помощью LINQ (Visual Basic)
Интегрированный с языком запрос (LINQ) упрощает доступ к сведениям о базе данных и выполнении запросов.
В следующем примере показано, как создать приложение, которое выполняет запросы к базе данных SQL Server и сортирует результаты по нескольким полям с помощью Order By
предложения. Порядок сортировки для каждого поля может быть по возрастанию или убыванию. Дополнительные сведения см. в предложении Order By.
В примерах в этом разделе используется пример базы данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных".
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание подключения к базе данных
В Visual Studio откройте Обозреватель Server Обозреватель Database, щелкнув сервер Обозреватель// Database Обозреватель в меню "Вид".
Щелкните правой кнопкой мыши Подключение данных в Обозреватель Server Обозреватель/ Database, а затем нажмите кнопку "Добавить Подключение".
Укажите допустимое подключение к образцу базы данных Northwind.
Добавление проекта, содержащего файл LINQ to SQL
В меню Файл окна Visual Studio наведите указатель мыши на пункт Создать и щелкните Проект. Выберите приложение Visual Basic Windows Forms в качестве типа проекта.
В меню Проект выберите Добавить новый элемент. Выберите шаблон элемента классов LINQ to SQL.
Назовите файл
northwind.dbml
. Нажмите кнопку Добавить. Откроется реляционный конструктор объектов (конструктор O/R) для файла northwind.dbml.
Добавление таблиц для запроса в конструктор операций ввода-вывода или R
В Обозреватель Server Обозреватель/ Database разверните подключение к базе данных Northwind. Разверните папку Таблицы.
Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув файл northwind.dbml, который вы добавили ранее.
Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора. Щелкните таблицу "Заказы" и перетащите ее в левую область конструктора.
Конструктор создает новые
Customer
иOrder
объекты для проекта. Обратите внимание, что конструктор автоматически обнаруживает связи между таблицами и создает дочерние свойства для связанных объектов. Например, IntelliSense покажет, чтоCustomer
объект имеет свойство для всех заказов, связанных с этим клиентомOrders
.Сохраните изменения и закройте конструктор.
Сохраните проект.
Добавление кода для запроса к базе данных и отображение результатов
На панели элементов перетащите DataGridView элемент управления в форму Windows Form по умолчанию для проекта Form1.
Дважды щелкните Form1, чтобы добавить код в
Load
событие формы.При добавлении таблиц в конструктор O/R конструктор конструктора в проект добавлен DataContext объект. Этот объект содержит код, который необходимо получить для доступа к этим таблицам, а также для доступа к отдельным объектам и коллекциям для каждой таблицы. Объект DataContext проекта называется на основе имени DBML-файла. Для этого проекта DataContext объект называется
northwindDataContext
.Вы можете создать экземпляр DataContext кода и запросить таблицы, указанные конструктором O/R.
Добавьте следующий код в
Load
событие, чтобы запросить таблицы, предоставляемые в качестве свойств контекста данных, и сортировать результаты. Запрос сортирует результаты по количеству заказов клиентов в порядке убывания. Клиенты с одинаковым количеством заказов упорядочены по имени компании в порядке возрастания (по умолчанию).Dim db As New northwindDataContext Dim q = From cust In db.Customers Where cust.Orders.Count > 0 Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country Order By OrderCount Descending, CompanyName DataGridView1.DataSource = q
Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.