Практическое руководство. Сортировка результатов запроса с помощью LINQ (Visual Basic)
Запросы, интегрированные в язык программирования (Language-Integrated Query, LINQ), упрощают доступ к содержимому базы данных и обеспечивают выполнение запросов.
В приведенном ниже примере показано, как создать новое приложение, в котором выполняются запросы к базе данных SQL Server и сортируются результаты по множеству полей с помощью ключевого слова Order By. Порядок сортировки для каждого поля может быть возрастающим или убывающим. Дополнительные сведения см. в разделе Предложение Order By (Visual Basic).
В примерах этого раздела используется учебная база данных "Борей". При отсутствии учебной базы данных "Борей" на компьютере разработчика ее можно загрузить с веб-узла Центра загрузки Майкрософт. Указания см. в разделе Загрузка образцов баз данных (LINQ to SQL).
Примечание
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.
Создание подключения к базе данных
В Visual Studio откройте обозреватель серверов или обозреватель баз данных. Для этого в меню Вид выберите пункт Обозреватель серверов или Обозреватель баз данных.
В обозревателе серверов или обозревателе баз данных щелкните правой кнопкой мыши Подключения данных, а затем выберите команду Добавить подключение.
Укажите допустимое подключение к учебной базе данных "Борей".
Добавление проекта, содержащего файл LINQ-SQL
В меню Файл Visual Studio выберите команду Создать и щелкните Проект. Выберите Приложение Windows Forms в качестве типа проекта Visual Basic.
В меню Проект выберите команду Добавить новый элемент. Выберите шаблон элемента Классы LINQ-SQL.
Назовите файл northwind.dbml. Нажмите кнопку Добавить. Откроется реляционный конструктор объектов для файла northwind.dbml.
Добавление таблицы к запросу в реляционном конструкторе объектов
В обозревателе серверов или обозревателе баз данных разверните подключение к базе данных "Борей". Разверните папку Таблицы.
Если объектно-реляционный конструктор закрыт, откройте его снова, дважды щелкнув файл northwind.dbml, который был добавлен ранее.
Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора. Щелкните таблицу "Заказы" и перетащите ее в левую область конструктора.
Для проекта в конструкторе создаются новые объекты Customer и Order. Обратите внимание, что конструктор автоматически обнаруживает связи между таблицами и создает дочерние свойства для связанных объектов. Например, функция IntelliSense покажет, что в объекте Customer имеется свойство Orders для всех заказов, связанных с клиентом.
Сохраните изменения и закройте конструктор.
Сохраните проект.
Добавление кода в запрос к базе данных и отображение результатов
С панели элементов перетащите элемент управления DataGridView в заданную для проекта по умолчанию форму Windows Forms (Form1).
Дважды щелкните Form1, чтобы добавить код в событие формы Load.
При добавлении таблиц в реляционный конструктор объектов конструктор добавил объект DataContext в проект. Этот объект содержит код, необходимый для доступа к этим таблицам и доступа к отдельным объектам и коллекциям для каждой таблицы. Объекту DataContext для проекта присвоено имя на основе имени файла .dbml. В данном проекте объект DataContext называется northwindDataContext.
Теперь можно создать в коде экземпляр DataContext и запросить таблицы, указанные объектно-реляционным конструктором.
Добавьте приведенный ниже код к событию 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, чтобы запустить проект и просмотреть результаты.
См. также
Задачи
Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)
Основные понятия
Методы DataContext (реляционный конструктор объектов)