Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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.
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.
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.
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)
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.
Pour des exigences de tri plus complexes, vous pouvez utiliser des comparateurs personnalisés. La méthode OrderBy
vous permet de passer un IComparer
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
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
.
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.
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
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
.
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
.
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
IronPDF peut être installé à l'aide de la commandeConsole du gestionnaire de paquets NuGet ou en utilisant le gestionnaire de paquets Visual Studio.
dotnet add package IronPdf
dotnet add package IronPdf
'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.
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.
Le résultat suivant est disponible dans le PDF.
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.
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.
10 produits API .NET pour vos documents de bureau