Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
La ordenación es una operación fundamental en cualquier lenguaje de programación, y el método OrderBy de C# es una potente herramienta para ordenar elementos dentro de colecciones. Tanto si trabaja con arrays, listas u otras estructuras enumerables, entender cómo aprovechar OrderBy puede mejorar enormemente la legibilidad y funcionalidad de su código.
Más adelante presentaremosBiblioteca IronPDF de Iron Software y cómo podemos utilizar el método LINQ OrderBy y IronPDF para generar PDF formateados y ordenados.
El método OrderBy
forma parte de LINQ(Consulta integrada en el lenguaje) es una biblioteca en C# diseñada específicamente para ordenar elementos en orden ascendente; como es la forma predeterminada de ordenar los datos, no es necesaria una palabra clave ascendente.
En C#, hay dos formas de aplicar este método: mediante la sintaxis de métodos o la sintaxis de consultas. Utilizaremos la sintaxis del método por ser sencilla:
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
Aquí, la colección es la colección fuente IEnumerable
que desea ordenar, y OrderByProperty
es la propiedad o expresión por la que desea ordenar los elementos. El método de extensión de la expresión lambda dentro de OrderBy
especifica el criterio de ordenación.
Para ordenar en orden descendente, puede utilizar el método OrderByDescending
utilizando la sintaxis basada en métodos:
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
En el mundo real, a menudo es necesario ordenar una colección en función de varios criterios. OrderBy
permite esto encadenando múltiples llamadas ThenBy
o ThenByDescending
:
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);
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. A continuación, para los elementos con el mismo valor OrderByProperty1, se ordena por OrderByProperty2 en orden descendente.
Para requisitos de clasificación más complejos, puede utilizar comparadores personalizados. El método OrderBy
permite pasar un `IComparer
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
Aquí, CustomComparer
es una clase que implementa el `IComparer
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);
}
}
}
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 números enteros se ordena en orden ascendente utilizando OrderBy
.
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);
}
}
}
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 la ordenación de una lista de cadenas en orden alfabético ascendente.
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}");
}
}
}
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 Persona personalizados se ordena en función de la propiedad edad en orden ascendente.
En la consola aparece la siguiente salida
Cuando se trata de propiedades de cadena, es posible que desee garantizar una ordenación que no distinga entre mayúsculas y minúsculas:
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
Este ejemplo utiliza StringComparer.OrdinalIgnoreCase
para realizar una ordenación sin distinción entre mayúsculas y minúsculas basada en la propiedad LastName
.
Aunque LINQ proporciona una forma concisa de ordenar colecciones, es esencial tener en cuenta las implicaciones de rendimiento, especialmente para grandes conjuntos de datos. Para situaciones en las que el rendimiento sea crítico, puede explorar alternativas como la ordenación in situ mediante la función List<T>.Sort
.
Descubra las funciones de IronPDF dentro de la biblioteca C# PDF deIron Softwareel traductor debe ser capaz de leer y generar documentos PDF. Puede convertir fácilmente a PDF documentos formateados con información de estilo. IronPDF puede generar PDF a partir de cadenas HTML, o puede descargar el HTML de la URL y luego generar PDF.
IronPDF brilla cuando se trata deconvertir HTML a PDF, preservando todos los diseños y estilos. Puede generar PDFs a partir de diversos contenidos web, como informes, facturas y documentación. La herramienta trabaja con archivos HTML, URLs y cadenas 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");
}
}
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");
}
}
IronPDF puede instalarse mediante la aplicaciónConsola del gestor de paquetes NuGet o mediante el gestor de paquetes de Visual Studio.
dotnet add package IronPdf
dotnet add package IronPdf
También puede instalar IronPDF utilizando NuGet Package Manager buscando "ironpdf" en la barra de búsqueda.
A continuación se muestra el código para generar un informe PDF utilizando una cadena HTML y el generador IronPDF:
// See https://aka.ms/new-console-template for more information
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);
string name = "Sam";
var count = people.Count;
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
var pdfDocument = new ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
}
}
// See https://aka.ms/new-console-template for more information
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);
string name = "Sam";
var count = people.Count;
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
var pdfDocument = new ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
}
}
Aquí estamos generando primero una cadena HTML a partir de sortedPeople
que está ordenada en orden ascendente con todo el formato requerido para los informes. A continuación, utilizamos IronPDF para generar un documento PDF. Utilizamos el método RenderHtmlAsPdf
para convertir la cadena HTML en un documento PDF.
El PDF contiene los siguientes resultados.
Puede obtener una clave de prueba enLicencia de prueba de IronPDF. Esta clave debe colocarse en appsettings.json.
"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"
Proporcione su correo electrónico para obtener una licencia de prueba.
El método OrderBy en C# es una herramienta versátil para ordenar colecciones basándose en varios criterios. Tanto si está ordenando en orden ascendente o descendente, por uno o varios criterios, o utilizando comparadores personalizados, el dominio de OrderBy puede mejorar significativamente la claridad y la eficiencia de su código.
Junto conBiblioteca IronPDF para generar documentos PDFademás, la traducción debe ser profesional, conservando la precisión técnica y explicando al mismo tiempo las características y ventajas de estas herramientas para desarrolladores.