.NET 帮助 C# 数据表(开发者教程) Jacob Mellor 已更新:2025年6月22日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 欢迎来到这个 C# DataTables 教程。 DataTable 是由 .NET 框架提供的强大数据结构,允许您以表格式存储、操作和查询数据。 在本教程中,我们将探索 C# 中 DataTables 的基本知识,包括创建和修改 DataTables、添加列和行、查询数据,以及使用 DataView 进行过滤和排序。 在本教程结束时,您将对如何在 C# 应用程序中使用 DataTables 有很好的理解。 让我们开始吧! 创建 DataTable 在 C# 中创建 DataTable,您首先需要导入 System.Data 命名空间。 这个命名空间包含各种与数据操作相关的类和方法,包括 DataTable 类。 using System.Data; using System.Data; $vbLabelText $csharpLabel 接下来,您可以创建 DataTable 类的实例。 最简单的方法是使用默认构造函数,如下所示: DataTable dt = new DataTable(); DataTable dt = new DataTable(); $vbLabelText $csharpLabel 您还可以通过向构造函数传递一个字符串参数来创建具有特定名称的 DataTable。 DataTable dt = new DataTable("Employees"); DataTable dt = new DataTable("Employees"); $vbLabelText $csharpLabel DataTable 方法 添加列 创建 DataTable 后,您可以开始向其添加列。 要添加列,您首先需要创建 DataColumn 类的实例并设置其属性,比如 ColumnName 和 DataType。 这是一个向 DataTable 添加三列的示例: DataColumn idColumn = new DataColumn("Id", typeof(int)); DataColumn nameColumn = new DataColumn("Name", typeof(string)); DataColumn ageColumn = new DataColumn("Age", typeof(int)); dt.Columns.Add(idColumn); dt.Columns.Add(nameColumn); dt.Columns.Add(ageColumn); DataColumn idColumn = new DataColumn("Id", typeof(int)); DataColumn nameColumn = new DataColumn("Name", typeof(string)); DataColumn ageColumn = new DataColumn("Age", typeof(int)); dt.Columns.Add(idColumn); dt.Columns.Add(nameColumn); dt.Columns.Add(ageColumn); $vbLabelText $csharpLabel 您可以像在数据表中一样添加多个列,如 Id 列。 添加数据行 定义列后,您可以开始向 DataTable 添加行。 要添加一行,您需要创建一个新的 DataRow 类实例并用所需数据填充其字段。 这是一个向 DataTable 添加新行的示例: DataRow newRow = dt.NewRow(); newRow["Id"] = 1; newRow["Name"] = "John Doe"; newRow["Age"] = 30; dt.Rows.Add(newRow); DataRow newRow = dt.NewRow(); newRow["Id"] = 1; newRow["Name"] = "John Doe"; newRow["Age"] = 30; dt.Rows.Add(newRow); $vbLabelText $csharpLabel 您还可以使用循环中的相同方法一次添加多个 DataTable 行。 for (int i = 1; i <= 3; i++) { DataRow row = dt.NewRow(); row["Id"] = i; row["Name"] = "Employee " + i; row["Age"] = 20 + i; dt.Rows.Add(row); } for (int i = 1; i <= 3; i++) { DataRow row = dt.NewRow(); row["Id"] = i; row["Name"] = "Employee " + i; row["Age"] = 20 + i; dt.Rows.Add(row); } $vbLabelText $csharpLabel 在上面的代码中,我们添加了三行数据。 访问数据 您可以通过遍历其 Rows 和 Columns 集合来访问存储在 DataTable 中的数据。 这是一个如何在控制台中显示 DataTable 内容的示例: foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + "\t"); } Console.WriteLine(); } foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) { Console.Write(row[col] + "\t"); } Console.WriteLine(); } $vbLabelText $csharpLabel 修改数据 您可以通过更新 DataRow 对象中的值来修改 DataTable 中的数据。 这是如何更新特定员工年龄的示例: var primaryKey = 1; DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key if (employeeRow != null) { employeeRow["Age"] = 35; } var primaryKey = 1; DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key if (employeeRow != null) { employeeRow["Age"] = 35; } $vbLabelText $csharpLabel 删除行 您可以通过在 DataRow 对象上调用 Delete 方法从 DataTable 删除一行: DataRow employeeRow = dt.Rows.Find(1); if (employeeRow != null) { employeeRow.Delete(); dt.AcceptChanges(); // Commit the deletion } DataRow employeeRow = dt.Rows.Find(1); if (employeeRow != null) { employeeRow.Delete(); dt.AcceptChanges(); // Commit the deletion } $vbLabelText $csharpLabel 请记住,对 DataRow 调用 Delete 仅会标记该行以供删除。 您需要对 DataTable 调用 AcceptChanges 方法以永久删除已删除的行。 管理多个表 在某些情况下,您可能需要同时处理多个数据表。 您可以创建数据集变量来存储多个 DataTable 对象并管理它们之间的关系。 使用 LINQ 查询数据 LINQ(Language Integrated Query)是 C# 中的一个强大功能,允许您查询来自各种数据源的数据,包括 DataTable 对象。 要在 DataTables 中使用 LINQ,您需要导入 System.Linq 命名空间。 这是一个使用 LINQ 过滤超过 25 岁员工的示例: using System.Linq; var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25); foreach (DataRow row in filteredRows) { Console.WriteLine(row["Name"]); } using System.Linq; var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25); foreach (DataRow row in filteredRows) { Console.WriteLine(row["Name"]); } $vbLabelText $csharpLabel DataView:排序和过滤 DataView 是 System.Data 命名空间提供的另一个有用的类,允许您创建 DataTable 的排序或过滤视图。 当您需要在类似 DataGridView 的 UI 控件中显示数据时,这尤其有用。 我们还可以通过数据绑定将数据从 DataTable 添加到 DataGridView 控件。 这是一个如何创建 DataView 以基于员工年龄进行过滤和排序的示例: DataView view = new DataView(dt); // Filter employees older than 25 view.RowFilter = "Age > 25"; // Sort by age in descending order view.Sort = "Age DESC"; // Display the filtered and sorted data foreach (DataRowView rowView in view) { DataRow row = rowView.Row; Console.WriteLine(row["Name"]); } DataView view = new DataView(dt); // Filter employees older than 25 view.RowFilter = "Age > 25"; // Sort by age in descending order view.Sort = "Age DESC"; // Display the filtered and sorted data foreach (DataRowView rowView in view) { DataRow row = rowView.Row; Console.WriteLine(row["Name"]); } $vbLabelText $csharpLabel 使用 IronPDF 导出 DataTable 至 PDF IronPDF 是一个强大的 HTML 到 PDF 转换器,提供丰富的用户友好 PDF 操作功能,使开发者能够在 .NET 应用程序中创建、读取和编辑 PDF 文档。 using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 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"); // 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"); // 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(); // 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"); // 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"); // Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } $vbLabelText $csharpLabel 在本节中,我们将学习如何使用 IronPDF 将 DataTable 导出为 PDF 文档。 首先,您需要安装 IronPDF NuGet 包。 在 Visual Studio 中打开包管理器控制台并运行以下命令: Install-Package IronPdf 包安装后,您可以通过在代码中导入必要的命名空间来开始: using IronPdf; using System.IO; using IronPdf; using System.IO; $vbLabelText $csharpLabel 接下来,创建一个帮助方法,将 DataTable 转换为 HTML 表格,因为 IronPDF 使用 HTML 在 PDF 文档中渲染内容: public static string ConvertDataTableToHtml(DataTable dt) { StringBuilder htmlBuilder = new StringBuilder(); htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>"); htmlBuilder.AppendLine("<tr>"); // Add column headers foreach (DataColumn col in dt.Columns) { htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName); } htmlBuilder.AppendLine("</tr>"); // Add rows foreach (DataRow row in dt.Rows) { htmlBuilder.AppendLine("<tr>"); foreach (DataColumn col in dt.Columns) { htmlBuilder.AppendFormat("<td>{0}</td>", row[col]); } htmlBuilder.AppendLine("</tr>"); } htmlBuilder.AppendLine("</table>"); return htmlBuilder.ToString(); } public static string ConvertDataTableToHtml(DataTable dt) { StringBuilder htmlBuilder = new StringBuilder(); htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>"); htmlBuilder.AppendLine("<tr>"); // Add column headers foreach (DataColumn col in dt.Columns) { htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName); } htmlBuilder.AppendLine("</tr>"); // Add rows foreach (DataRow row in dt.Rows) { htmlBuilder.AppendLine("<tr>"); foreach (DataColumn col in dt.Columns) { htmlBuilder.AppendFormat("<td>{0}</td>", row[col]); } htmlBuilder.AppendLine("</tr>"); } htmlBuilder.AppendLine("</table>"); return htmlBuilder.ToString(); } $vbLabelText $csharpLabel 现在,您可以使用 IronPDF 提供的 HtmlToPdf class 渲染 HTML 表格并将其保存为 PDF 文件: public static void ExportDataTableToPdf(DataTable dt, string outputPath) { // Convert DataTable to HTML string htmlTable = ConvertDataTableToHtml(dt); // Create a new HTML to PDF renderer var renderer = new ChromePdfRenderer(); // Set global styles for the table renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print; renderer.RenderingOptions.FirstPageNumber = 1; // Render the HTML table as a PDF document PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable); // Save the PDF file pdf.SaveAs(outputPath); } public static void ExportDataTableToPdf(DataTable dt, string outputPath) { // Convert DataTable to HTML string htmlTable = ConvertDataTableToHtml(dt); // Create a new HTML to PDF renderer var renderer = new ChromePdfRenderer(); // Set global styles for the table renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print; renderer.RenderingOptions.FirstPageNumber = 1; // Render the HTML table as a PDF document PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable); // Save the PDF file pdf.SaveAs(outputPath); } $vbLabelText $csharpLabel ExportDataTableToPdf 方法从 HTML 表格创建 DataTable 并保存到 PDF 文件。 最后,使用适当的参数调用 ExportDataTableToPdf 方法以导出您的 DataTable: string pdfOutputPath = "Employees.pdf"; ExportDataTableToPdf(dt, pdfOutputPath); string pdfOutputPath = "Employees.pdf"; ExportDataTableToPdf(dt, pdfOutputPath); $vbLabelText $csharpLabel 这将创建一个名为 "Employees.pdf" 的 PDF 文件,其中包含 DataTable 的内容,以表格式呈现。 结论 在本教程中,您已学习 C# 中 DataTables 的基础知识以及如何使用 IronPDF 库将 DataTable 导出为 PDF 文档。 通过结合主键列、数据集变量和 DataView 进行过滤和排序,您将拥有更大的数据控制和灵活性。 现在您应该对 DataTables 有很好的理解,并知道如何将 IronPDF 与 DataTables 结合使用以在您的 C# 应用程序中创建专业的 PDF 报告。 IronPDF 提供免费试用其功能,允许您在购买前探索其能力。 常见问题解答 C#中的DataTable是什么? 数据表是.NET框架中的一种多功能数据结构,允许开发人员以表格格式存储、操作和查询数据,这对于在应用程序中处理结构化数据至关重要。 如何在C#中将DataTable转换为PDF文档? 要将DataTable转换为PDF文档,首先将DataTable转换为HTML表格。使用IronPDF的HtmlToPdf类将HTML渲染为PDF文档并保存生成的文件。 如何在C#中创建DataTable? 在C#中创建DataTable涉及导入System.Data命名空间并使用其构造函数实例化DataTable类,可以选择性地为DataTable提供特定名称。 添加列到DataTable的步骤是什么? 要向DataTable添加列,创建DataColumn类的实例,配置如ColumnName和DataType等属性,并将它们添加到DataTable的Columns集合中。 如何将DataTable的数据导出到PDF以用于报告? 您可以通过将DataTable转换为HTML表格格式,然后使用IronPDF将此HTML呈现为PDF文档,从而创建专业级报告。 如何在C#中向DataTable添加行? 在C#中向DataTable添加行,创建一个新的DataRow实例,用数据填充它,并将其添加到DataTable的Rows集合中。可以使用循环为多行重复此过程。 什么是LINQ及其如何与DataTables一起使用? LINQ(语言集成查询)是C#中的一种强大查询工具,它可以从包括DataTables在内的各种数据源筛选、排序和操作数据,以简化数据操作。 如何使用DataView过滤和排序DataTable? DataView提供了一种方便的方式来创建过滤或排序的DataTable视图。通过设置RowFilter和Sort属性,可以控制数据的显示方式,这在UI组件中特别有用。 如何安装必要的库以将DataTables导出到PDF? 要安装将DataTables导出到PDF所需的IronPDF库,请使用Visual Studio中的包管理器控制台,并执行以下命令:Install-Package IronPdf。 Jacob Mellor 立即与工程团队聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。 相关文章 已更新2025年12月11日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多 已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新2025年12月20日 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 安装 NuGet PowerShell(开发者教程)如何在 C# 中使用 .NET Fiddle
已更新2025年12月11日 架起 CLI 简洁性与 .NET 的桥梁:使用 IronPDF for .NET 的 Curl DotNet Jacob Mellor 通过 CurlDotNet 填补了这一空白,CurlDotNet 库的创建是为了将 cURL 的熟悉感带入 .NET 生态系统。 阅读更多
已更新2025年12月20日 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多