在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
排序是任何编程语言中的基本操作,而C#的OrderBy方法是整理集合内元素的强大工具。 无论是使用数组、列表还是其他可枚举结构,理解如何利用OrderBy可以极大地提高代码的可读性和功能性。
在本文的后面,我们将介绍Iron Software 的 IronPDF 库以及我们如何使用 LINQ OrderBy 方法和 IronPDF 生成格式化和排序的 PDF。
OrderBy
方法是 LINQ 的一部分(语言集成查询)该工具是一个 C# 库,专门用于按升序对元素进行排序; 由于这是数据排序的默认方式,因此不需要升序关键字。
在 C# 中,有两种方法可以应用这种方法:通过方法语法或查询语法。 我们将使用方法语法,因为它很简单明了:
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
这里,集合是你想要排序的 IEnumerable
源集合,OrderByProperty
是你想要排序元素的属性或表达式。 在OrderBy
中的lambda表达式扩展方法指定了排序标准。
要按降序排序,您可以使用基于方法的语法中的 OrderByDescending
方法:
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
在现实场景中,您通常需要根据多个标准对集合进行排序。 OrderBy
允许通过链接多个 ThenBy
或 ThenByDescending
调用来实现这一点:
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);
在本例中,首先按照 OrderByProperty1 以升序对集合进行排序。 然后,对于具有相同 OrderByProperty1 值的元素,按照 OrderByProperty2 降序排序。
对于更复杂的排序需求,您可以使用自定义比较器。 OrderBy
方法允许您传递一个 IComparer
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
这里,"CustomComparer "是一个实现 "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);
}
}
}
在本例中,使用 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);
}
}
}
本例演示按字母升序对字符串列表进行排序。
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}");
}
}
}
在此示例中,自定义的 Person 对象列表根据 age 属性按升序排序。
以下输出在控制台中可见
在处理字符串属性时,您可能想确保不区分大小写的排序:
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
此示例使用 StringComparer.OrdinalIgnoreCase
根据 LastName
属性执行大小写不敏感排序。
虽然LINQ提供了简洁的方法来对集合进行排序,但对于大数据集,考虑性能影响是至关重要的。 对于性能至关重要的场景,您可以探索诸如使用 List
就地排序的替代方案。
了解 IronPDF 功能在 C# PDF 库内从铁软件我们还需要开发一款有助于阅读和生成 PDF 文档的软件--.NET, Java, Python 或 Node js。 它可以将包含样式信息的格式化文档轻松转换为 PDF。 IronPdf 可以从 HTML 字符串生成 PDF,也可以从 URL 下载 HTML,然后生成 PDF。
IronPDF 在以下方面大放异彩将 HTML 转换为 PDF, 保留所有布局和样式。 它可以从各种网页内容生成PDF,例如报告、发票和文档。 该工具使用HTML文件、URL和HTML字符串创建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 可以通过以下方式安装NuGet 软件包管理器控制台或使用 Visual Studio 软件包管理器。
dotnet add package IronPdf
dotnet add package IronPdf
您也可以使用 NuGet 包管理器安装 IronPDF,方法是在搜索栏中搜索 "ironpdf"。
以下是使用 HTML 字符串和 IronPDF 生成器生成 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");
}
}
// 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");
}
}
在这里,我们首先从 sortedPeople
生成一个 HTML 字符串,该字符串按升序排序,并包含报告所需的所有格式。 然后我们使用IronPDF生成一个PDF文档。 我们使用 RenderHtmlAsPdf
方法将 HTML 字符串转换为 PDF 文档。
PDF 中的输出结果如下。
试用钥匙可以从IronPDF 试用许可证. 这个密钥需要放置在appsettings.json中。
"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"
提供您的电子邮件以获取试用许可证。
在C#中,OrderBy方法是一个根据各种标准对集合进行排序的多功能工具。 无论是按升序还是降序排序,按单一或多个标准排序,或使用自定义比较器,掌握OrderBy可以显著提高你的代码的清晰度和效率。
共同与用于生成 PDF 文档的 IronPDF 库此外,翻译过程中还必须考虑到".NET"、"Java"、"Python "或 "Node js",这是一个很好的组合,可以生成格式精美、分类明确的文档集。