IRONSOFTWAREHOME
开发者更新

C# 数据表转列表(开发者如何使用)

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命名空间的一部分。

在本教程中,我们将使用一个名为DataTable。 这可以可视化为如下所示:

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中。

扩展高级转换技术

在掌握了将DataTable转换为C#列表的基础知识后,有几种高级技术和考虑事项可以优化这一过程,并使其适应更复杂的场景。 让我们深入研究这些技术。

使用反射将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;
}

这种DataTable中的每一个。 对于每个列,它会搜索通用对象中的匹配属性并设置其值。 这种方法允许创建一个高度可重用的方法,可以将任何DataTable转换为通用对象列表。

使用

要使用上述代码,只需通过指定类型调用方法:

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

使用此方法,您不再局限于将特定数据表转换为特定对象类型。相反,您手头有一个灵活的工具,可以处理多种数据场景。

性能考虑

虽然反射法很强大,但值得注意的是,它可能较慢,尤其是在数据表较大时。 始终有必要衡量性能,并权衡代码重用和可维护性的好处。

为.NET开发人员提供的Iron Suite工具包

尽管我们已经深入探讨了在C#中将DataTable转换为列表的复杂性,但有时依赖外部工具可以简化我们的开发过程,尤其是在涉及到更复杂的操作时。 这就是Iron Suite的用武之地。

IronPDF:PDF强力工具

C# DataTable转列表(如何让开发人员受益) 图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转列表(如何让开发人员受益) 图2 - IronXL for .NET: The C# Excel Library

如果您的DataTable转换引出了与Excel相关的任务,IronXL就是您需要的工具。 该产品提供无缝的操作,用于读取、编辑和创建Excel电子表格。 有了数据表到列表的转换,导出数据到Excel格式变得非常简单,只需使用IronXL即可。

IronOCR:使文本可辨认

C# DataTable转列表(如何让开发人员受益) 图3 - IronOCR for .NET: The C# OCR Library

有时候,您的DataTable由基于图像的数据组成,或者您需要从图像中提取文本。 这就是IronOCR闪耀的地方。 它允许.NET开发人员从图像中读取文本,如果您的DataTable转换操作涉及包含文本信息的图像,它将是一个补充工具。

IronBarcode:从条形码中读取信息

C# DataTable转列表(如何让开发人员受益) 图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 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

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 起