
C# DataTable (Wie es für Entwickler funktioniert Tutorial)
Willkommen zu diesem Tutorial über C# DataTables. Ein DataTable ist eine leistungsstarke Datenstruktur, die vom .NET Framework bereitgestellt wird und Ihnen ermöglicht, Daten in einem tabellarischen Format zu speichern, zu manipulieren und abzufragen. In diesem Tutorial werden wir die Grundlagen von DataTables in C# erkunden, einschließlich der Erstellung und Änderung von DataTables, dem Hinzufügen von Spalten und Zeilen, der Abfrage von Daten und der Verwendung von DataView zum Filtern und Sortieren.
Am Ende dieses Tutorials werden Sie ein gutes Verständnis dafür haben, wie Sie DataTables in Ihren C#-Anwendungen verwenden können. Legen wir los!
Erstellen einer DataTable
Um ein DataTable in C# zu erstellen, müssen Sie zuerst das System.Data-Namespace importieren. Dieses Namespace enthält verschiedene Klassen und Methoden, die sich auf die Datenmanipulation beziehen, einschließlich der DataTable-Klasse.
using System.Data;Imports System.DataAls Nächstes können Sie eine Instanz der DataTable-Klasse erstellen. Der einfachste Weg, dies zu tun, ist die Verwendung des Standardkonstruktors, wie folgt:
DataTable dt = new DataTable();Dim dt As New DataTable()Sie können auch ein DataTable mit einem bestimmten Namen erstellen, indem Sie einen Zeichenfolgenparameter an den Konstruktor übergeben:
DataTable dt = new DataTable("Employees");Dim dt As New DataTable("Employees")DataTable-Methoden
Spalten hinzufügen
Sobald Sie ein DataTable erstellt haben, können Sie damit beginnen, Spalten hinzuzufügen. Um eine Spalte hinzuzufügen, müssen Sie zuerst eine Instanz der DataColumn-Klasse erstellen und deren Eigenschaften wie ColumnName und DataType festlegen.
Hier ist ein Beispiel, wie man drei Spalten zu einem DataTable hinzufügt:
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)Sie können mehrere Spalten wie die Id-Spalte in der Datentabelle hinzufügen.
Hinzufügen von Datenzeilen
Nach der Definition der Spalten können Sie damit beginnen, Zeilen zur DataTable hinzuzufügen. Um eine Zeile hinzuzufügen, müssen Sie eine neue Instanz der DataRow-Klasse erstellen und deren Felder mit den erforderlichen Daten füllen.
Hier ist ein Beispiel, wie Sie eine neue Zeile zu einer DataTable hinzufügen:
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)Sie können auch mehrere DataTable-Zeilen gleichzeitig mithilfe derselben Methode in einer Schleife hinzufügen.
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 iIm obigen Code haben wir drei Datenzeilen hinzugefügt.
Zugriff auf Daten
Sie können auf die in einem DataTable gespeicherten Daten zugreifen, indem Sie durch deren Rows- und Columns-Sammlungen iterieren. Hier ist ein Beispiel, wie Sie den Inhalt eines DataTable in der Konsole anzeigen:
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 rowDaten modifizieren
Sie können die Daten in einem DataTable ändern, indem Sie die Werte in dessen DataRow-Objekten aktualisieren. Hier ist ein Beispiel, wie man das Alter eines bestimmten Mitarbeiters aktualisiert:
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 IfLöschen von Zeilen
Sie können eine Zeile aus einer DataTable löschen, indem Sie die Delete-Methode an einem DataRow-Objekt aufrufen:
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 IfBeachten Sie, dass der Aufruf von Delete auf einem DataRow die Zeile nur zum Löschen markiert. Sie müssen die AcceptChanges-Methode am DataTable aufrufen, um die gelöschten Zeilen dauerhaft zu entfernen.
Verwaltung mehrerer Tabellen
In einigen Fällen müssen Sie möglicherweise mit mehreren Datentabellen gleichzeitig arbeiten. Sie können eine Dataset-Variable erstellen, um mehrere DataTable-Objekte zu speichern und die Beziehungen zwischen ihnen zu verwalten.
Datenabfrage mit LINQ
LINQ (Language Integrated Query) ist eine leistungsstarke Funktion in C#, die es Ihnen ermöglicht, Daten aus verschiedenen Datenquellen, einschließlich DataTable-Objekten, abzufragen. Um LINQ mit DataTables zu verwenden, müssen Sie das System.Linq-Namespace importieren. Hier ist ein Beispiel, wie man Mitarbeiter über 25 mit LINQ filtert:
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 rowDataView: Sortieren und Filtern
DataView ist eine weitere nützliche Klasse, die vom System.Data-Namespace bereitgestellt wird und es Ihnen ermöglicht, eine sortierte oder gefilterte Ansicht eines DataTable zu erstellen. Dies ist besonders nützlich, wenn Sie die Daten in einem UI-Element wie einem DataGridView anzeigen müssen. Wir können auch Datenbindung durchführen, um Daten zum DataGridView-Steuerelement aus einem DataTable hinzuzufügen.
Hier ist ein Beispiel, wie man eine DataView erstellt, um die Mitarbeiter basierend auf ihrem Alter zu filtern und zu sortieren:
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 rowViewExportieren von DataTable in PDF mit IronPDF
IronPDF ist ein leistungsstarker HTML nach PDF Konverter, komplett mit benutzerfreundlichen PDF-Manipulationsfunktionen, die es Entwicklern ermöglichen, PDF-Dokumente innerhalb von .NET-Anwendungen zu erstellen, zu lesen und zu bearbeiten.
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 ClassIn diesem Abschnitt lernen wir, wie man ein DataTable in ein PDF-Dokument exportiert, indem man IronPDF verwendet.
Zuerst müssen Sie das IronPDF NuGet-Paket installieren. Öffnen Sie die Paket-Manager-Konsole in Visual Studio und führen Sie den folgenden Befehl aus:
Sobald das Paket installiert ist, können Sie damit beginnen, die erforderlichen Namespaces in Ihren Code zu importieren:
using IronPdf;
using System.IO;Imports IronPdf
Imports System.IOAls nächstes erstellen Sie eine Hilfsmethode, die das DataTable in eine HTML-Tabelle konvertiert, da IronPDF HTML verwendet, um Inhalte in PDF-Dokumenten zu rendern:
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(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
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
htmlBuilder.AppendLine("</tr>")
Next
htmlBuilder.AppendLine("</table>")
Return htmlBuilder.ToString()
End FunctionJetzt können Sie den von IronPDF bereitgestellten HtmlToPdf class verwenden, um die HTML-Tabelle zu rendern und als PDF-Datei zu speichern:
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(dt As DataTable, outputPath As String)
' Convert DataTable to HTML
Dim htmlTable As String = ConvertDataTableToHtml(dt)
' Create a new HTML to PDF renderer
Dim renderer As 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 SubDie ExportDataTableToPdf-Methode erstellt ein DataTable aus der HTML-Tabelle und speichert es in der PDF-Datei.
Rufen Sie schließlich die ExportDataTableToPdf-Methode mit den entsprechenden Parametern auf, um Ihren DataTable zu exportieren:
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);Dim pdfOutputPath As String = "Employees.pdf"
ExportDataTableToPdf(dt, pdfOutputPath)Dies erstellt eine PDF-Datei namens "Employees.pdf", die den Inhalt Ihres DataTable in tabellarischer Form enthält.

Abschluss
In diesem Tutorial haben Sie die Grundlagen von DataTables in C# und wie man ein DataTable in ein PDF-Dokument mithilfe der IronPDF-Bibliothek exportiert, gelernt. Durch die Einbeziehung der Primärschlüsselspalte, Dataset-Variablen und DataView zum Filtern und Sortieren haben Sie mehr Kontrolle und Flexibilität über Ihre Daten. Jetzt sollten Sie ein gutes Verständnis von DataTables und wie Sie IronPDF in Verbindung mit DataTables verwenden, um professionell aussehende PDF-Berichte in Ihren C#-Anwendungen zu erstellen.
IronPDF bietet eine kostenlose Testversion seiner Funktionen an, die es Ihnen ermöglicht, seine Fähigkeiten zu erkunden, bevor Sie sich für einen Kauf entscheiden.

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.
Verwandte Artikel


