Compartir a través de


Cómo: Devolver el resultado de una consulta con LINQ como tipo específico (Visual Basic)

Actualización: noviembre 2007

Language-Integrated Query (LINQ) simplifica el acceso a la información de las bases de datos y la ejecución de consultas. De forma predeterminada, las consultas LINQ devuelven una lista de objetos como un tipo anónimo. También se puede especificar que una consulta devuelva una lista de un tipo determinado mediante la cláusula Select.

En el ejemplo siguiente se muestra cómo crear una nueva aplicación que realiza consultas en una base de datos de SQL Server y proyecta los resultados como un tipo con nombre específico. Para obtener más información, consulte Tipos anónimos y Select (Cláusula, Visual Basic).

En los ejemplos de este tema se usa la base de datos de ejemplo Northwind. Si no tiene instalada la base de datos de ejemplo Northwind en el equipo de desarrollo, puede descargarla desde el sitio web del Centro de descarga de Microsoft. Para obtener instrucciones, vea Descargar bases de datos de ejemplo (LINQ to SQL).

Nota:

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Para crear una conexión a una base de datos

  1. En Visual Studio, haga clic en Explorador de servidores/Explorador de bases de datos en el menú Ver para abrir el Explorador de servidores/Explorador de bases de datos.

  2. En el Explorador de servidores/Explorador de bases de datos, haga clic con el botón secundario del mouse en Conexiones de datos y, a continuación, haga clic en Agregar conexión.

  3. Especifique una conexión válida a la base de datos de ejemplo Northwind.

Para agregar un proyecto que contiene un archivo de LINQ to SQL

  1. En el menú Archivo de Visual Studio, elija Nuevo y, a continuación, haga clic en Proyecto. Seleccione Aplicación de Windows Forms de Visual Basic como tipo de proyecto.

  2. En el menú Proyecto, haga clic en Agregar nuevo elemento. Seleccione la plantilla de elementos Clases de LINQ to SQL.

  3. Asigne al archivo el nombre northwind.dbml. Haga clic en Agregar. Se abre el Diseñador relacional de objetos para el archivo northwind.dbml.

Para agregar tablas al Diseñador relacional de objetos

  1. En el Explorador de servidores/Explorador de bases de datos, expanda la conexión a la base de datos Northwind. Expanda la carpeta Tablas.

    Si ha cerrado el Diseñador relacional de objetos, puede volver a abrirlo haciendo doble clic en el archivo northwind.dbml que agregó anteriormente.

  2. Haga clic en la tabla Customers y arrástrela hasta el panel izquierdo del diseñador.

    El diseñador crea un nuevo objeto Customer para el proyecto. Se puede proyectar el resultado de una consulta como el tipo Customer o como un tipo creado por el usuario. En este ejemplo se crea un nuevo tipo en un procedimiento posterior y se proyecta un resultado de consulta como ese tipo.

  3. Guarde los cambios y cierre el diseñador.

  4. Guarde el proyecto.

Para agregar código de consulta a la base de datos y mostrar los resultados

  1. Desde el Cuadro de herramientas, arrastre un control DataGridView hasta el formulario Windows Forms predeterminado del proyecto, Form1.

  2. Haga doble clic en Form1 para modificar la clase Form1.

  3. Después de la instrucción End Class de la clase Form1, agregue el código siguiente para crear un tipo CustomerInfo que contenga los resultados de consulta de este ejemplo.

    Public Class CustomerInfo
      Private _CompanyName As String
      Private _ContactName As String
    
      Public Property CompanyName() As String
        Get
          Return _CompanyName
        End Get
        Set(ByVal value As String)
          _CompanyName = value
        End Set
      End Property
    
      Public Property ContactName() As String
        Get
          Return _ContactName
        End Get
        Set(ByVal value As String)
          _ContactName = value
        End Set
      End Property
    End Class
    
  4. Cuando agregó tablas al Diseñador relacional de objetos, éste agregó un objeto DataContext al proyecto. Este objeto contiene el código necesario para obtener acceso a esas tablas y a los objetos individuales y colecciones de cada tabla. El nombre del objeto DataContext del proyecto se basa en el nombre del archivo .dbml. En este proyecto, el objeto DataContext se denomina northwindDataContext.

    Puede crear una instancia de DataContext en el código y consultar las tablas que especifica el Diseñador relacional de objetos.

    En el evento Load de la clase Form1, agregue el código siguiente para consultar las tablas que se exponen como propiedades del contexto de datos. La cláusula Select de la consulta creará un nuevo tipo CustomerInfo en lugar de un tipo anónimo para cada elemento del resultado de la consulta.

    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. Presione F5 para ejecutar el proyecto y ver los resultados.

Vea también

Tareas

Tutorial: Crear clases de LINQ to SQL (Diseñador relacional de objetos)

Conceptos

Métodos DataContext (Diseñador relacional de objetos)

Otros recursos

LINQ en Visual Basic

Consultas (Visual Basic)

LINQ to SQL