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

Интегрированный с языком запрос (LINQ) упрощает доступ к сведениям о базе данных и выполнении запросов. По умолчанию запросы LINQ возвращают список объектов в виде анонимного типа. Можно также указать, что запрос возвращает список определенного типа с помощью Select предложения.

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

В примерах в этом разделе используется пример базы данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных".

Примечание.

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

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

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

  2. Щелкните правой кнопкой мыши Подключение данных в Обозреватель Server Обозреватель/ Database, а затем нажмите кнопку "Добавить Подключение".

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

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

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

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

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

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

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

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

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

    Конструктор создает новый Customer объект для проекта. Вы можете проецить результат запроса в виде Customer типа или в виде создаваемого типа. В этом примере будет создан новый тип в более поздней процедуре и проецируются результаты запроса в качестве этого типа.

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

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

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

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

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

  3. End Class После инструкции класса Form1 добавьте следующий код, чтобы создать CustomerInfo тип для хранения результатов запроса для этого примера.

    Public Class CustomerInfo
        Public Property CompanyName As String
        Public Property ContactName As String
    End Class
    
  4. При добавлении таблиц в конструктор O/R конструктор конструктора в проект добавлен DataContext объект. Этот объект содержит код, который необходимо получить для доступа к этим таблицам, а также для доступа к отдельным объектам и коллекциям для каждой таблицы. Объект DataContext проекта называется на основе имени DBML-файла. Для этого проекта DataContext объект называется northwindDataContext.

    Вы можете создать экземпляр DataContext кода и запросить таблицы, указанные конструктором O/R.

    Load В случае класса Form1 добавьте следующий код для запроса таблиц, предоставляемых в качестве свойств контекста данных. Предложение Select запроса создаст новый CustomerInfo тип вместо анонимного типа для каждого элемента результата запроса.

    Dim db As New northwindDataContext
    
    Dim customerList =
      From cust In db.Customers
      Where cust.CompanyName.StartsWith("L")
      Select New CustomerInfo With {.CompanyName = cust.CompanyName,
                                    .ContactName = cust.ContactName}
    
    DataGridView1.DataSource = customerList
    
  5. Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.

См. также