IRONSOFTWAREHOME
開發者更新

C# Datatable 轉換為列表(開發者的工作原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2025年6月20日

Converting DataTable to List in C#

在使用C#進行編程時,經常需要將DataTable轉換為列表。雖然許多新手在這項任務上遇到困難,但他們常常得到的答案不夠全面。 本教程旨在彌合這一差距,並提供關於如何在C#中將DataTable轉換為列表的明確指南。

什麼是DataTable?

在深入了解轉換過程之前,至關重要的是要了解什麼是DataTable。 在C#中,DataTable物件表示一個具有行和列的記憶體中資料庫表。 它是System.Data命名空間的一部分。

為了本教程的目的,讓我們使用一個名為dt。 這可以如下所示地可視化:

using System.Data;

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Category", typeof(string));
dt.Rows.Add(1, "Electronics");
dt.Rows.Add(2, "Books");

開始進行轉換

所以,您已經獲得了您的DataTable dt,現在您正在凝視它思考,"我該如何轉換這個?" 別擔心; 這是一個顯示研究努力的問題。 主要有兩種方法可以將DataTable轉換為列表:

  1. 使用LINQ(語言整合查詢)
  2. 使用傳統的foreach迴圈

使用LINQ進行轉換

LINQ方法是C#中一個強大的工具,提供了一種聲明式方式來查詢集合。 讓我們看看如何做到這一點。

定義一個方法如下所示:

using System.Linq;
using System.Collections.Generic;

private static List<dynamic> LinqMethod(DataTable dt)
{
    return dt.AsEnumerable().Select(row =>
        new 
        {
            ID = row.Field<int>("ID"),
            Category = row.Field<string>("Category")
        }).ToList();
}

在上述程式碼中,擴展方法DataTable dt上。 這使我們能夠在DataRow上使用LINQ。 該方法建立了一個動態物件的列表,每個動態物件代表DataTable中的一行。

使用foreach迴圈進行轉換

foreach迴圈是C#中遍歷集合的一種久經考驗的方法。 這種方法可能看起來稍微長一些,但容易理解和實施。

它的工作原理如下:

private static List<Category> ForeachMethod(DataTable dt)
{
    List<Category> list = new List<Category>();

    // Iterates through each row within the data table
    foreach (DataRow row in dt.Rows)
    {
        var category = new Category
        {
            ID = Convert.ToInt32(row["ID"]),
            Name = row["Category"].ToString()
        };
        list.Add(category);
    }
    return list;
}

public class Category
{
    public int ID { get; set; }
    public string Name { get; set; }
}

在list中。

擴展進階轉換技術

在掌握了在C#中將DataTable轉換為列表的基礎知識後,有幾種高級技術和考量可以優化這一過程並將其適應於更複雜的場景。 讓我們深入探討其中一些技術。

使用反射將DataTable轉換為列表

反射是C#中的一個強大工具,允許您在運行時檢查型別的元資料。讓我們利用其力量:

using System.Reflection;

private static List<t> ConvertDataTableToList<t>(DataTable dt) where T : new()
{
    List<t> list = new List<t>();

    foreach (DataRow row in dt.Rows)
    {
        T obj = new T();
        foreach (DataColumn col in dt.Columns)
        {
            var prop = obj.GetType().GetProperty(col.ColumnName);
            if (prop != null && row[col] != DBNull.Value)
                prop.SetValue(obj, row[col]);
        }
        list.Add(obj);
    }
    return list;
}

此DataRow和列上進行迭代。 對於每個列,它會搜尋通用物件中的匹配屬性並設置其值。 這種方法允許建立一個高度可重用的方法,可以將任何DataTable轉換為泛型物件的列表。

用法

要使用上述程式碼,只需通過指定型別來調用該方法:

List<Category> categories = ConvertDataTableToList<Category>(dt);

使用此方法,您不再局限於將特定資料表轉換為特定物件型別。取而代之的是,您有一個多功能工具,能處理各種資料場景。

性能考量

雖然反射方法很強大,但值得注意的是,特別是對於大型資料表,它可能會比較慢。 衡量性能始終是至關重要的,並將其與程式碼的可重用性和可維護性效益進行比較。

為 .NET 開發人員準備的 Iron Suite 工具組

雖然我們深入探討了在C#中將DataTable轉換為列表的細節,但有時依賴外部工具可以簡化我們的開發過程,尤其是在涉及更複雜的操作時。 這就是Iron Suite的作用所在。

IronPDF:PDF的強大幫手

C# DataTable to List (How It Works For Developers) Figure 1 - IronPDF for .NET: The C# PDF Library

當涉及到在C#中操作PDF時,IronPDF可謂是遊戲規則的改變者。 想像一下,您已經將您的DataTable轉換為列表,然後需要從中生成PDF報告。 IronPDF可以輕鬆地建立、編輯和從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");
    }
}

IronXL:在Excel操作中取得卓越

C# DataTable to List (How It Works For Developers) Figure 2 - IronXL for .NET: The C# Excel Library

如果您的DataTable轉換需要進行與Excel相關的任務,IronXL就是可轉向的工具。 該產品提供無縫讀取、編輯和建立Excel電子表格的操作。 有了從資料表到列表的轉換在手,在IronXL的幫助下,將資料導出為Excel格式變得極其簡單。

IronOCR:使文字變得可識別

C# DataTable to List (How It Works For Developers) Figure 3 - IronOCR for .NET: The C# OCR Library

有時,當您的DataTable包含基於圖像的資料或需要從圖像中提取文字時, 這就是IronOCR發揮作用的地方。 它允許 .NET 開發人員從圖像中讀取文字,如果您的DataTable轉換操作涉及到含有文字資訊的圖像時,它是一個很好的補充工具。

IronBarcode:注釋間的閱讀

C# DataTable to List (How It Works For Developers) Figure 4 - IronBarcode for .NET: The C# Barcode Library

最後,IronBarcode是您的應用中任何條碼操作的首選工具。 假設您的DataTable或您已將其轉換為的列表包含了商品資訊和條形碼。 在這種情況下,IronBarcode提供了一種高效的機制來閱讀和生成條碼,彌補了原始產品資料和可掃描的條碼資訊之間的差距。

結論

雖然手動操控和轉換DataTable的方法對於任何C#開發者來說都是至關重要的,但整合像Iron Suite提供的強大工具可以指數式地提升您的生產力和能力。 值得注意的是,每個產品的授權都從$999開始,更令人吸引的是,每個產品都提供免費試用。 如果您考慮投資這些工具,有一個很誘人的優惠:您可以以兩個產品的價格獲得整個Iron Suite。 接受這樣的綜合解決方案,無疑會提升您.NET開發工作的質量和效率。

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

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起