Créez des PDF avec IronPDF et Orderby. Voyez les résultats en action !
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
License.LicenseKey = "License-Key";
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");
}
}
C# Orderby (Comment ça marche pour les développeurs)
Jordi Bardia
février 18, 2024
Partager:
Le tri est une opération fondamentale dans tout langage de programmation, et la méthode OrderBy de C# est un outil puissant pour classer des éléments dans des collections. Que vous travailliez avec des tableaux, des listes ou d'autres structures énumérables, la compréhension de l'utilisation de OrderBy peut grandement améliorer la lisibilité et la fonctionnalité de votre code.
Plus loin dans cet article, nous présenteronsBibliothèque IronPDF d'Iron Software et comment nous pouvons utiliser la méthode LINQ OrderBy et IronPDF pour générer des PDF formatés et triés.
Qu'est-ce que la méthode LINQ OrderBy ?
La méthode OrderBy fait partie de la méthode LINQ(Requête intégrée à la langue) la bibliothèque .NET en C# est spécialement conçue pour trier les éléments dans l'ordre croissant ; comme il s'agit de la méthode par défaut pour trier les données, il n'est pas nécessaire d'utiliser un mot-clé ascendant.
Comment utiliser la méthode LINQ OrderBy
Tri des données par ordre croissant
En C#, il existe deux façons d'appliquer cette méthode : par la syntaxe des méthodes ou la syntaxe des requêtes. Nous utiliserons la syntaxe de la méthode car elle est simple :
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
Dim sortedCollection = collection.OrderBy(Function(item) item.OrderByProperty)
Ici, la collection est la collection source IEnumerable que vous voulez trier, et OrderByProperty est la propriété ou l'expression par laquelle vous voulez ordonner les éléments. La méthode d'extension de l'expression lambda dans OrderBy spécifie le critère de tri.
Tri des données par ordre décroissant
Pour trier par ordre décroissant, vous pouvez utiliser la méthode OrderByDescending en utilisant la syntaxe basée sur la méthode :
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
Dim sortedCollectionDesc = collection.OrderByDescending(Function(item) item.OrderByProperty)
Tri des données en fonction de plusieurs critères
Dans le monde réel, il est souvent nécessaire de trier une collection sur la base de plusieurs critères. OrderBy permet cela en enchaînant plusieurs appels ThenBy ou ThenByDescending :
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);
Dim multiSortedCollection = collection.OrderBy(Function(item) item.OrderByProperty1).ThenByDescending(Function(item) item.OrderByProperty2)
Dans cet exemple, la collection est d'abord triée par OrderByProperty1 dans l'ordre croissant. Ensuite, pour les éléments ayant la même valeur OrderByProperty1, ils sont triés par OrderByProperty2 dans l'ordre décroissant.
Comparateurs personnalisés
Pour des exigences de tri plus complexes, vous pouvez utiliser des comparateurs personnalisés. La méthode OrderBy vous permet de passer un IComparer`, comme le montre l'exemple suivant :
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
Dim customSortedCollection = collection.OrderBy(Function(item) item.Property, New CustomComparer())
Ici, CustomComparer est une classe implémentant la classe IComparer`, fournissant une logique personnalisée pour la comparaison des éléments.
Exemple pratique : Trier des objets
Tri d'une liste d'entiers
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);
}
}
}
Imports System
Imports System.Linq
Imports System.Collections.Generic
Friend Class Program
Shared Sub Main()
Dim numbers As New List(Of Integer) From {5, 2, 8, 1, 7}
Dim sortedNumbers = numbers.OrderBy(Function(num) num)
Console.WriteLine("Sorted Numbers:")
For Each number In sortedNumbers
Console.WriteLine(number)
Next number
End Sub
End Class
Dans cet exemple, une liste d'entiers est triée par ordre croissant en utilisant OrderBy.
Trier une liste de chaînes de caractères
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);
}
}
}
Imports System
Imports System.Linq
Imports System.Collections.Generic
Friend Class Program
Shared Sub Main()
Dim names As New List(Of String) From {"Alice", "Charlie", "Bob", "David"}
Dim sortedNames = names.OrderBy(Function(name) name)
Console.WriteLine("Sorted Names:")
For Each name In sortedNames
Console.WriteLine(name)
Next name
End Sub
End Class
Cet exemple montre comment trier une liste de chaînes de caractères par ordre alphabétique croissant.
Trier une liste d'objets personnalisés
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}");
}
}
}
Imports System
Imports System.Linq
Imports System.Collections.Generic
Friend Class Person
Public Property FirstName() As String
Public Property LastName() As String
Public Property Age() As Integer
End Class
Friend Class Program
Shared Sub Main()
Dim people As New List(Of Person) From {
New Person With {
.FirstName = "John",
.LastName = "Doe",
.Age = 30
},
New Person With {
.FirstName = "Alice",
.LastName = "Smith",
.Age = 25
},
New Person With {
.FirstName = "Bob",
.LastName = "Johnson",
.Age = 35
}
}
Dim sortedPeople = people.OrderBy(Function(person) person.Age)
Console.WriteLine("Sorted People by Age:")
For Each person In sortedPeople
Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}")
Next person
End Sub
End Class
Dans cet exemple, une liste d'objets personnalisés Person est triée par ordre croissant sur la base de la propriété age.
La sortie suivante est visible dans la console
Manipulation des comparaisons de chaînes de caractères
Lorsqu'il s'agit de propriétés de type chaîne de caractères, il peut être utile d'assurer un tri insensible à la casse :
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
Dim sortedPeopleByName = people.OrderBy(Function(person) person.LastName, StringComparer.OrdinalIgnoreCase)
Cet exemple utilise StringComparer.OrdinalIgnoreCase pour effectuer un tri insensible à la casse basé sur la propriété LastName.
Considérations sur les performances
Bien que LINQ offre un moyen concis de trier les collections, il est essentiel de prendre en compte les implications en termes de performances, en particulier pour les grands ensembles de données. Pour les scénarios où les performances sont critiques, vous pouvez explorer des alternatives comme le tri sur place en utilisant la fonction List<T>méthode .Sort.
Présentation d'IronPDF
Découvrez les capacités d'IronPDF au sein de la bibliothèque C# PDF deIron Softwarela traduction doit être professionnelle, en préservant la précision technique tout en expliquant les caractéristiques et les avantages de ces outils de développement. Il est possible de convertir facilement en PDF des documents formatés contenant des informations de style. IronPDF peut générer des PDF à partir de chaînes HTML, ou télécharger le HTML à partir de l'URL, puis générer des PDF.
IronPDF se démarque lorsqu'il s'agit deconvertir HTML en PDF, en préservant toutes les mises en page et styles. Il peut générer des PDF à partir de divers contenus web, tels que des rapports, des factures et des documentations. L'outil fonctionne avec des fichiers HTML, des URL et des chaînes HTML pour créer des fichiers 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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
Vous pouvez également installer IronPDF à l'aide du gestionnaire de paquets NuGet en recherchant "ironpdf" dans la barre de recherche.
Génération d'un PDF à l'aide d'IronPDF
Vous trouverez ci-dessous le code permettant de générer un rapport PDF à l'aide d'une chaîne HTML et du générateur 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");
}
}
Imports Microsoft.VisualBasic
' See https://aka.ms/new-console-template for more information
Friend Class Person
Public Property FirstName() As String
Public Property LastName() As String
Public Property Age() As Integer
End Class
Friend Class Program
Shared Sub Main()
Dim people As New List(Of Person) From {
New Person With {
.FirstName = "John",
.LastName = "Doe",
.Age = 30
},
New Person With {
.FirstName = "Alice",
.LastName = "Smith",
.Age = 25
},
New Person With {
.FirstName = "Bob",
.LastName = "Johnson",
.Age = 35
}
}
Dim sortedPeople = people.OrderBy(Function(person) person.Age)
Dim name As String = "Sam"
Dim count = people.Count
Dim content As String = $"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" & String.Join(vbLf, sortedPeople.Select(Function(person) $"{person.FirstName} {person.LastName}, Age: {person.Age}")) & "
</body>
</html>"
' Create a new PDF document
Dim pdfDocument = New ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf")
End Sub
End Class
Ici, nous générons d'abord une chaîne HTML à partir de sortedPeople qui est triée par ordre croissant avec tous les formats requis pour les rapports. Nous utilisons ensuite IronPDF pour générer un document PDF. Nous utilisons la méthode RenderHtmlAsPdf pour convertir la chaîne HTML en document PDF.
Sortie
Le résultat suivant est disponible dans le PDF.
Licence (essai gratuit disponible)
Une clé d'essai peut être obtenue auprès deLicence d'essai d'IronPDF. Cette clé doit être placée dans appsettings.json.
"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronPdf.LicenseKey": "your license key"
Indiquez votre adresse électronique pour obtenir une licence d'essai.
Conclusion
La méthode OrderBy en C# est un outil polyvalent permettant de trier des collections en fonction de divers critères. Qu'il s'agisse de trier par ordre croissant ou décroissant, selon un ou plusieurs critères, ou d'utiliser des comparateurs personnalisés, la maîtrise de OrderBy peut améliorer considérablement la clarté et l'efficacité de votre code.
Ensemble avecBibliothèque IronPDF pour la génération de documents PDFl'utilisation d'une collection d'outils de développement, c'est une excellente combinaison pour générer une collection joliment formatée et triée sous la forme d'un document.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT C# Dev Kit VS Code Extension (Comment ça marche pour les développeurs)
SUIVANT > MSTest C# (Comment ça marche pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier