IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

C# Orderby (Cómo Funciona para Desarrolladores)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 21 de abril de 2026

La clasificación es una operación fundamental en cualquier lenguaje de programación, y el método OrderBy de C# es una herramienta poderosa para organizar elementos dentro de colecciones. Ya sea trabajando con matrices, listas u otras estructuras enumerables, comprender cómo aprovechar OrderBy puede mejorar significativamente la legibilidad y funcionalidad de tu código.

Más adelante en este artículo, presentaremos la biblioteca IronPDF de Iron Software y cómo podemos utilizar el método LINQ OrderBy e IronPDF para generar PDFs formateados y ordenados.

¿Qué es el método LINQ OrderBy?

El método OrderBy es parte de la biblioteca LINQ (Language-Integrated Query) en C# y está diseñado específicamente para ordenar elementos en orden ascendente; ya que es la forma predeterminada de ordenar datos, no hay necesidad de una palabra clave para ascendente.

Cómo utilizar el método LINQ OrderBy

Clasificación de datos en orden ascendente

En C#, hay dos formas de aplicar este método: mediante la sintaxis de método o la sintaxis de consulta. Usaremos la sintaxis de método ya que es directa:

var sortedCollection = collection.OrderBy(item => item.OrderByProperty);

Aquí, collection es la colección fuente de IEnumerable que deseas ordenar, y OrderByProperty es la propiedad o expresión por la cual deseas ordenar los elementos. La expresión lambda dentro de OrderBy especifica el criterio de ordenación.

Clasificación de datos en orden descendente

Para ordenar en orden descendente, puedes usar el método OrderByDescending utilizando la sintaxis basada en métodos:

var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);

Ordenación de datos por múltiples criterios

En escenarios del mundo real, a menudo necesitas ordenar una colección basada en múltiples criterios. OrderBy permite esto encadenando múltiples llamadas de ThenBy o ThenByDescending:

var multiSortedCollection = collection
    .OrderBy(item => item.OrderByProperty1)
    .ThenByDescending(item => item.OrderByProperty2);

En este ejemplo, la colección se ordena primero por OrderByProperty1 en orden ascendente. Luego, para los elementos con el mismo valor OrderByProperty1, se ordena por OrderByProperty2 en orden descendente.

Comparadores personalizados

Para requisitos de ordenación más complejos, puedes usar comparadores personalizados. El método OrderBy te permite pasar una implementación de IComparer<t>, como se muestra en el siguiente ejemplo:

var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());

Aquí, CustomComparer es una clase que implementa la interfaz IComparer<t>, proporcionando lógica personalizada para comparar elementos.

Ejemplo práctico: Ordenación de objetos

Ordenación de una lista de números enteros

using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
        var sortedNumbers = numbers.OrderBy(num => num);
        Console.WriteLine("Sorted Numbers:");
        foreach (var number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

En este ejemplo, una lista de enteros se ordena en orden ascendente usando OrderBy.

Ordenar una lista de cadenas

using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
        var sortedNames = names.OrderBy(name => name);
        Console.WriteLine("Sorted Names:");
        foreach (var name in sortedNames)
        {
            Console.WriteLine(name);
        }
    }
}

Este ejemplo demuestra cómo ordenar una lista de cadenas en orden ascendente alfabéticamente.

Ordenación de una lista de objetos personalizados

using System;
using System.Linq;
using System.Collections.Generic;

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        Console.WriteLine("Sorted People by Age:");
        foreach (var person in sortedPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
        }
    }
}

En este ejemplo, una lista de objetos personalizados Person se ordena basada en la propiedad Age en orden ascendente.

La siguiente salida es visible en la consola:

C# Orderby (Cómo Funciona Para Desarrolladores): Figura 1 - Salida del código anterior ordenando objetos personalizados

Manejo de comparaciones de cadenas

Al tratar con propiedades de cadena, es posible que quieras garantizar una ordenación insensible a mayúsculas y minúsculas:

var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);

Este ejemplo utiliza StringComparer.OrdinalIgnoreCase para realizar un ordenamiento insensible a mayúsculas en base a la propiedad LastName.

Consideraciones sobre el rendimiento

Aunque LINQ proporciona una forma concisa de ordenar colecciones, es esencial considerar las implicaciones de rendimiento, especialmente para grandes conjuntos de datos. Para escenarios críticos de rendimiento, podrías explorar alternativas como ordenar en el lugar usando el método List<t>.Sort.

Presentando IronPDF

Descubre las capacidades de IronPDF dentro de la biblioteca de PDF de C# de Iron Software, que ayuda a leer y generar documentos PDF. Puede convertir fácilmente documentos formateados con información de estilo a PDF. IronPDF puede generar PDFs a partir de cadenas de HTML, o puede descargar el HTML de la URL y luego generar PDFs.

IronPDF destaca cuando se trata de convertir HTML a PDF, preservando todos los diseños y estilos. Puede generar PDFs a partir de varios contenidos web, como informes, facturas y documentación. La herramienta trabaja con archivos HTML, URLs y cadenas de HTML para crear archivos PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Instalación

IronPDF se puede instalar utilizando la consola de administración de paquetes NuGet o utilizando el administrador de paquetes de Visual Studio.

PM > Install-Package IronPdf

También puedes instalar IronPDF usando el Administrador de paquetes NuGet buscando "IronPDF" en la barra de búsqueda.

C# Orderby (Cómo Funciona Para Desarrolladores): Figura 2 - Instalando IronPDF a través del Administrador de Paquetes de NuGet

Generación de un PDF con IronPDF

A continuación se muestra el código para generar un informe PDF usando una cadena de HTML y el generador de IronPDF:

// See https://aka.ms/new-console-template for more information

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        
        // Sort people by age
        var sortedPeople = people.OrderBy(person => person.Age);
        
        string name = "Sam";
        var count = people.Count;
        
        // Generate an HTML string
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" + string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";

        // Create a new PDF document and save it
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}

Aquí primero estamos generando una cadena HTML desde sortedPeople que se ordena en orden ascendente con todo el formato requerido para los informes. Luego usamos IronPDF para generar un documento PDF. Utilizamos el método RenderHtmlAsPdf para convertir la cadena HTML en un documento PDF.

Resultado

La siguiente salida está disponible en el PDF:

C# Orderby (Cómo Funciona Para Desarrolladores): Figura 3 - Salida PDF del código anterior

Licencia (Prueba gratuita disponible)

Se puede obtener una clave de prueba de Licencia de Prueba de IronPDF. Esta clave debe colocarse en appsettings.json.

"IronPdf.LicenseKey": "your license key"
JSON

Proporcione su correo para una licencia de prueba.

Conclusión

El método OrderBy en C# es una herramienta versátil para ordenar colecciones basadas en varios criterios. Ya sea que estés ordenando en orden ascendente o descendente, por un solo criterio o por múltiples criterios, o utilizando comparadores personalizados, dominar OrderBy puede mejorar significativamente la claridad y eficiencia de tu código.

Junto con la biblioteca IronPDF para generar documentos PDF, es una gran combinación para generar una colección bellamente formateada y ordenada como documento.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.

...
Read More

Related Articles

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge related to IronPDF Product Demo

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta