跳至頁尾內容
.NET 幫助

C# 清單(開發者使用方法)

在 C# 中,清單是用來儲存和操作資料集合的多功能動態資料結構。 這些工具是 System.Collections.Generic 命名空間的一部分,提供了一系列功能強大、類型安全的集合類和強類型物件。 這套適合初學者的教學將引導您使用 C# Lists 的基本知識,包括如何建立/新增元素、存取指定的索引或首次出現、修改指定的元素和移除元素,以及一些常見的使用案例。

建立清單

要開始使用 List 類別,您首先需要在程式碼中包含 System.Collections.Generic 命名空間:

using System.Collections.Generic;
using System.Collections.Generic;
$vbLabelText   $csharpLabel

新增一般命名空間後,在角括弧 (< >)內指定您要儲存的所有元素的資料類型,以建立新的 List 物件。 以下是如何建立整數清單的範例:

List<int> numbers = new List<int>();
List<int> numbers = new List<int>();
$vbLabelText   $csharpLabel

您也可以使用一些初始值來初始化清單,或像這樣以指定的集合來定義:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
$vbLabelText   $csharpLabel

我們也可以指定清單的預設初始容量。指定的初始容量即為清單的預設最大容量。

列表的方法

在清單中加入元素的數量

若要在 List 中加入元素,請使用 Add() 方法:

numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
$vbLabelText   $csharpLabel

您也可以使用 AddRange 方法,將指定集合中的元素範圍新增至清單中:

List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
$vbLabelText   $csharpLabel

存取清單元素

您可以使用索引存取清單中的個別元素,就像使用陣列一樣:

string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
$vbLabelText   $csharpLabel

請記住,清單是以 0 為索引,因此第一個元素的索引為 0。上述範例會在元素存在的情況下,將其儲存於字串中。

修改清單元素

若要修改清單中的元素,只需在所需索引的元素上指定新值,並注意以零為基礎的索引:

fruits[1] = "blueberry";
fruits[1] = "blueberry";
$vbLabelText   $csharpLabel

現在,水果清單中的第二個元素是"藍莓",而不是"香蕉"。

從清單中移除元素

若要從清單中移除元素,您可以使用 Remove 方法,此方法會移除指定元素的第一次出現:

fruits.Remove("apple");
fruits.Remove("apple");
$vbLabelText   $csharpLabel

另外,您也可以使用 RemoveAt 方法移除指定索引的元素:

fruits.RemoveAt(0);
fruits.RemoveAt(0);
$vbLabelText   $csharpLabel

若要移除清單中的所有元素,請使用 Clear 方法:

fruits.Clear();
fruits.Clear();
$vbLabelText   $csharpLabel

在清單中尋找元素

您可以使用 Contains() 方法來檢查清單是否包含特定元素:

bool containsApple = fruits.Contains("apple");  // true
bool containsApple = fruits.Contains("apple");  // true
$vbLabelText   $csharpLabel

若要尋找元素首次出現的索引,請使用 IndexOf 方法:

int appleIndex = fruits.IndexOf("apple");  // 0
int appleIndex = fruits.IndexOf("apple");  // 0
$vbLabelText   $csharpLabel

如果未找到該元素,IndexOf 會返回-1。

透過清單循環

若要遍歷清單中的元素,您可以使用 foreach 環路:

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
$vbLabelText   $csharpLabel

另外,您也可以使用 for 迴圈與 Count 屬性,它會回傳清單中元素的數量:

for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
$vbLabelText   $csharpLabel

清單排序

若要以升序排序清單,請使用 Sort 方法:

List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
$vbLabelText   $csharpLabel

若要以降序排序清單,您可以使用 Sort 方法與自訂的比較:

unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
$vbLabelText   $csharpLabel

若要進行更複雜的排序,您可以實作自訂的 IComparer 類別或使用 LINQ(語言整合查詢)。 二進位搜尋演算法適用於已排序的清單。

使用清單的 LINQ

LINQ 允許您對集合(包括清單)執行強大的查詢和轉換。 要使用 LINQ,您首先需要在程式碼中包含 System.Linq 命名空間:

using System.Linq;
using System.Linq;
$vbLabelText   $csharpLabel

以下是一些清單上的 LINQ 查詢範例:

過濾清單

List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
$vbLabelText   $csharpLabel

映射(轉換)列表中的元素

List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
$vbLabelText   $csharpLabel

尋找列表中的最小值和最大值

int minValue = numbers.Min();
int maxValue = numbers.Max();
int minValue = numbers.Min();
int maxValue = numbers.Max();
$vbLabelText   $csharpLabel

將列表轉換為陣列

若要將清單轉換為陣列,您可以使用 ToArray 方法:

int[] numbersArray = numbers.ToArray();
int[] numbersArray = numbers.ToArray();
$vbLabelText   $csharpLabel

使用 IronPDF 將清單資料匯出至 PDF。

在本節中,我們將示範如何使用 IronPDF 函式庫將 List 中的資料匯出至 PDF 檔案。 當您想要產生報告或可列印版本的資料時,這會很有幫助。

首先,下載 IronPDF NuGet 套件並安裝至您的專案:

Install-Package IronPdf

接下來,在您的程式碼中包含 IronPdf 命名空間:

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

現在,讓我們建立一個簡單的函式,將字串的 List 轉換成 HTML 表格,然後匯出成 PDF 檔案:

using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
$vbLabelText   $csharpLabel

要使用此功能,只需使用您的清單和所需的 PDF 檔案路徑來呼叫它:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
$vbLabelText   $csharpLabel

使用 IronPDF 將 HTML 轉換為 PDF 產生一個 PDF 檔案,名為"Fruits.pdf",其中包含一個列有水果清單的表格。 您可以修改 ExportListToPdf 函式以符合您的需求,例如在 HTML 表格中加入自訂樣式或在 PDF 中加入額外內容。

C# List (How It Works For Developers) 圖 1 - HTML to PDF

結論

在這份適合初學者的教學中,我們涵蓋了使用 C# Lists 的基本知識,並示範如何整合 IronPDF 以將 List 資料匯出至 PDF 檔案。通過將 IronPDF 整合到您的專案中,您可以輕鬆地從 C# 專案中產生報表、發票或其他可列印的文件。

IronPdf 提供 免費試用,讓您在承諾購買之前測試其功能。

常見問題解答

如何在C#中建立清單?

要在 C# 中建立 List,需要引入System.Collections.Generic命名空間。然後,可以透過在尖括號內指定資料類型來聲明 List。例如: Listnumbers = new List();

在 C# 清單中新增元素可以使用哪些方法?

可以使用Add()方法為 C# List 新增單一元素,使用AddRange()方法新增元素集合。

如何將C#清單匯出為PDF文件?

若要將 C# 清單匯出為 PDF 文件,可以使用 IronPDF 庫。將清單資料轉換為 HTML 表格格式,然後使用 IronPDF 將其渲染為 PDF 檔案。

在 C# 中,對 List 進行排序的最佳方法是什麼?

您可以使用Sort()方法按升序對 C# 清單進行排序。若要按降序排序,您可以將Sort()與自訂比較委託一起使用。

如何存取 C# 清單中的元素?

與陣列類似,C# 清單中的元素可以透過索引存取。清單的索引從零開始,因此您可以使用元素在清單中的位置來檢索它。

有哪些方法可以從 C# 清單中刪除元素?

您可以使用Remove()方法從 C# List 中刪除特定元素,使用RemoveAt()方法刪除特定索引,或使用Clear()刪除所有元素。

LINQ 如何與 C# 清單一起使用?

LINQ 可以與 C# 清單一起使用,以有效地執行強大的查詢和轉換,例如篩選、映射以及尋找最小值或最大值。

如何在C#中將List轉換為陣列?

您可以使用ToArray()方法將 C# List 轉換為數組,該方法會建立一個包含 List 元素的新數組。

C# 清單有哪些常見用例?

C# 清單通常用於管理動態資料集、使用 LINQ 執行複雜查詢以及使用 IronPDF 等庫產生報表或文件。

如何在 C# 清單中遍歷元素?

在 C# List 中,您可以使用foreach迴圈進行簡單迭代,或使用for迴圈來取得索引。

Jacob Mellor,Team Iron 首席技術官
首席技術長

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。