.NET 帮助 C# 数据表(开发者教程) Curtis Chau 已更新:六月 22, 2025 Download IronPDF NuGet 下载 DLL 下载 Windows 安装程序 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 欢迎来到这个 C# DataTables 教程。 DataTable 是由 .NET 框架提供的强大数据结构,允许您以表格式存储、操作和查询数据。 在本教程中,我们将探索 C# 中 DataTables 的基本知识,包括创建和修改 DataTables、添加列和行、查询数据,以及使用 DataView 进行过滤和排序。 在本教程结束时,您将对如何在 C# 应用程序中使用 DataTables 有很好的理解。 让我们开始吧! 创建 DataTable 在 C# 中创建 DataTable,您首先需要导入 System.Data 命名空间。 这个命名空间包含各种与数据操作相关的类和方法,包括 DataTable 类。 using System.Data; using System.Data; Imports System.Data $vbLabelText $csharpLabel 接下来,您可以创建 DataTable 类的实例。 最简单的方法是使用默认构造函数,如下所示: DataTable dt = new DataTable(); DataTable dt = new DataTable(); Dim dt As New DataTable() $vbLabelText $csharpLabel 您还可以通过向构造函数传递一个字符串参数来创建具有特定名称的 DataTable。 DataTable dt = new DataTable("Employees"); DataTable dt = new DataTable("Employees"); Dim dt As 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); Dim idColumn As New DataColumn("Id", GetType(Integer)) Dim nameColumn As New DataColumn("Name", GetType(String)) Dim ageColumn As New DataColumn("Age", GetType(Integer)) 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); Dim newRow As DataRow = 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); } For i As Integer = 1 To 3 Dim row As DataRow = dt.NewRow() row("Id") = i row("Name") = "Employee " & i row("Age") = 20 + i dt.Rows.Add(row) Next i $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(); } Imports Microsoft.VisualBasic For Each row As DataRow In dt.Rows For Each col As DataColumn In dt.Columns Console.Write(row(col) & vbTab) Next col Console.WriteLine() Next row $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; } Dim primaryKey = 1 Dim employeeRow As DataRow = dt.Rows.Find(primaryKey) ' Find the row with the specified primary key If employeeRow IsNot Nothing Then employeeRow("Age") = 35 End If $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 } Dim employeeRow As DataRow = dt.Rows.Find(1) If employeeRow IsNot Nothing Then employeeRow.Delete() dt.AcceptChanges() ' Commit the deletion End If $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"]); } Imports System.Linq Private filteredRows = dt.AsEnumerable().Where(Function(row) row.Field(Of Integer)("Age") > 25) For Each row As DataRow In filteredRows Console.WriteLine(row("Name")) Next row $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"]); } Dim view As 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 For Each rowView As DataRowView In view Dim row As DataRow = rowView.Row Console.WriteLine(row("Name")) Next rowView $vbLabelText $csharpLabel 使用 IronPDF 导出 DataTable 至 PDF IronPDF is a powerful 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"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel 在本节中,我们将学习如何使用 IronPDF 将 DataTable 导出为 PDF 文档。 首先,您需要安装 IronPDF NuGet 包。 在 Visual Studio 中打开包管理器控制台并运行以下命令: Install-Package IronPdf 包安装后,您可以通过在代码中导入必要的命名空间来开始: using IronPdf; using System.IO; using IronPdf; using System.IO; Imports IronPdf Imports 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(); } Public Shared Function ConvertDataTableToHtml(ByVal dt As DataTable) As String Dim htmlBuilder As New StringBuilder() htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>") htmlBuilder.AppendLine("<tr>") ' Add column headers For Each col As DataColumn In dt.Columns htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName) Next col htmlBuilder.AppendLine("</tr>") ' Add rows For Each row As DataRow In dt.Rows htmlBuilder.AppendLine("<tr>") For Each col As DataColumn In dt.Columns htmlBuilder.AppendFormat("<td>{0}</td>", row(col)) Next col htmlBuilder.AppendLine("</tr>") Next row htmlBuilder.AppendLine("</table>") Return htmlBuilder.ToString() End Function $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); } Public Shared Sub ExportDataTableToPdf(ByVal dt As DataTable, ByVal outputPath As String) ' Convert DataTable to HTML Dim htmlTable As String = ConvertDataTableToHtml(dt) ' Create a new HTML to PDF renderer Dim 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 Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlTable) ' Save the PDF file pdf.SaveAs(outputPath) End Sub $vbLabelText $csharpLabel ExportDataTableToPdf 方法从 HTML 表格创建 DataTable 并保存到 PDF 文件。 最后,使用适当的参数调用 ExportDataTableToPdf 方法以导出您的 DataTable: string pdfOutputPath = "Employees.pdf"; ExportDataTableToPdf(dt, pdfOutputPath); string pdfOutputPath = "Employees.pdf"; ExportDataTableToPdf(dt, pdfOutputPath); Dim pdfOutputPath As String = "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。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新九月 4, 2025 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 已更新八月 5, 2025 C# Switch 模式匹配(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 安装 NuGet PowerShell(开发者教程)如何在 C# 中使用 .NET Fiddle
已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多