在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 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 物件的清單依據年齡屬性進行遞增排序。
以下輸出在控制台中可見
當處理字串屬性時,您可能希望確保不區分大小寫的排序:
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
此範例使用 StringComparer.OrdinalIgnoreCase
根據 LastName
屬性進行不區分大小寫的排序。
雖然 LINQ 提供了一種簡潔的方法來排序集合,但對於大型數據集來說,考慮效能影響是至關重要的。 對於性能至關重要的情境,您可以考慮使用 List
就地排序等替代方案。.Sort
方法。
探索 IronPDF 的功能在 C# PDF 庫中Iron Software,幫助讀取和生成 PDF 文件。 它可以輕鬆將帶有樣式資訊的格式化文件轉換為 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 可以顯著提高您的代碼的清晰度和效率。
一起與IronPDF庫用於生成PDF文件,這是一個非常適合將精美格式化和排序的集合生成為文檔的組合。