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


Практическое руководство. Сортировка результатов запроса с помощью LINQ (Visual Basic)

Language-Integrated запрос (LINQ) упрощает доступ к базе данных и выполнение запросов.

В следующем примере показано, как создать приложение, которое выполняет запросы к базе данных SQL Server и сортирует результаты по нескольким полям с помощью предложения Order By. Порядок сортировки для каждого поля может быть по возрастанию или убыванию. Дополнительные сведения см. в предложении "Упорядочивание по".

В примерах в этой статье используется пример базы данных Northwind. Сведения о получении базы данных см. в разделе скачивания примеров баз данных.

Заметка

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

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

  1. В Visual Studio откройте обозреватель серверов /Обозреватель баз данных, щелкнув Обозреватель серверов/Обозреватель баз данных в меню Представление.

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

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

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

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

  2. На меню проекта щелкните Добавить новый элемент. Выберите шаблон элемента LINQ to SQL Classes.

  3. Назовите файл northwind.dbml. Нажмите кнопку Добавить. Конструктор реляционных объектов (конструктор O/R) открыт для файла northwind.dbml.

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

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

    Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув файл northwind.dbml, который вы добавили ранее.

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

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

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

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

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

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

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

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

См. также