Cómo: Ordenar los resultados de una consulta mediante LINQ (Visual Basic)

Language Integrated Query (LINQ) facilita el acceso a la información de las bases de datos y la ejecución de consultas.

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 ordena los resultados por varios campos mediante la cláusula Order By. El criterio de ordenación de cada campo puede ser orden ascendente o descendente. Para obtener más información, vea Order By (Cláusula).

En los ejemplos de este tema se usa la base de datos de ejemplo Northwind. Si no dispone de esta base de datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener instrucciones, vea Descargar bases de datos de ejemplo.

Nota:

Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. 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 Personalizar el IDE.

Para crear una conexión a una base de datos

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

  2. Haga clic con el botón derecho en Conexiones de datos en Explorador de servidores/Explorador de bases de datos y luego 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 contenga un archivo LINQ to SQL

  1. En el menú Archivo de Visual Studio, apunte a Nuevo y 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 elemento Clases de LINQ to SQL.

  3. Ponga al archivo el nombre northwind.dbml. Haga clic en Agregar. Se abre Object Relational Designer en el archivo northwind.dbml.

Para agregar tablas para consultar Object Relational Designer

  1. En 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 Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo northwind.dbml que ha agregado anteriormente.

  2. Haga clic en la tabla Clientes y arrástrela al panel izquierdo del diseñador. Haga clic en la tabla Pedidos y arrástrela al panel izquierdo del diseñador.

    El diseñador crea objetos nuevos Customer y Order para el proyecto. Observe que el diseñador detecta automáticamente las relaciones entre las tablas y crea propiedades secundarias para objetos relacionados. Por ejemplo, IntelliSense mostrará que el objeto Customer tiene una propiedad Orders para todos los pedidos relacionados con ese cliente.

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

  4. Guarde el proyecto.

Para agregar código para consultar la base de datos y mostrar los resultados

  1. En el Cuadro de herramientas, arrastre un control DataGridView a la instancia predeterminada de Windows Forms del proyecto, Form1.

  2. Haga doble clic en Form1 para agregar código al evento Load del formulario.

  3. Cuando ha agregado tablas a Object Relational Designer, el diseñador ha agregado un objeto DataContext al proyecto. Este objeto contiene el código que debe tener para acceder a esas tablas, y para acceder a objetos y colecciones individuales de cada tabla. El nombre del objeto DataContext del proyecto se basa en el nombre del archivo .dbml. En este proyecto, el nombre del objeto DataContext es northwindDataContext.

    Puede crear una instancia de DataContext en el código y consultar las tablas especificadas por Object Relational Designer.

    Agregue el código siguiente al evento Load para consultar las tablas que se exponen como propiedades del contexto de datos y ordenar los resultados. La consulta ordena los resultados por el número de pedidos de cliente, en orden descendente. Los clientes que tienen el mismo número de pedidos se ordenan por nombre de empresa en orden ascendente (valor predeterminado).

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

Vea también