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

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

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

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

Примечание

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

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

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

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

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

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

  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 Forms (Form1).

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

  3. При добавлении таблиц объектно-реляционный конструктор добавляет в проект объект DataContext. Этот объект содержит код, необходимый для обращения к этим таблицам, в дополнение к отдельным объектам и коллекциям для каждой таблицы. Объекту DataContext в проекте присвоено имя на основе имени файла .dbml. В данном проекте объект DataContext называется northwindDataContext.

    Теперь можно создать в коде экземпляр DataContext и запросить таблицы, указанные объектно-реляционным конструктором.

    Добавьте следующий код к событию Load для запроса к таблицам, которые отображаются как свойства контекста данных. Запрос фильтрует результаты и возвращает только клиентов, которые находятся в городе London.

    Dim db As New northwindDataContext
    
    Dim customers_London = From cust In db.Customers 
                           Where cust.City = "London" 
                           Select cust.CustomerID, cust.CompanyName, 
                                  OrderCount = cust.Orders.Count, 
                                  cust.City, cust.Country
    
    DataGridView1.DataSource = customers_London
    
  4. Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.

  5. Ниже приведены другие фильтры, которые можно попробовать.

    Dim companies_H = From cust In db.Customers 
                      Where cust.Orders.Count > 0 And
                            cust.CompanyName.StartsWith("H") 
                      Select cust.CustomerID, cust.CompanyName, 
                             OrderCount = cust.Orders.Count, 
                             cust.Country
    
    Dim customers_USA = From cust In db.Customers 
                        Where cust.Orders.Count > 15 And
                              cust.Country = "USA" 
                        Select cust.CustomerID, cust.CompanyName, 
                               OrderCount = cust.Orders.Count, 
                               cust.Country
    

См. также

Задачи

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

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

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

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

LINQ в Visual Basic

Запросы (Visual Basic)

LINQ to SQL