.NET-HILFE

C# DataTable (How It Works For Developers Tutorial)

Willkommen zu diesem Lehrgang über C# DataTables. Eine DataTable ist eine leistungsstarke Datenstruktur, die vom .NET-Framework bereitgestellt wird und es Ihnen ermöglicht, Daten in tabellarischer Form 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, dem Abfragen 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. Lass uns beginnen!

Erstellen einer DataTable

Um eine DataTable in C# zu erstellen, müssen Sie zuerst den System.Data-Namensraum importieren. Dieser Namensraum enthält verschiedene Klassen und Methoden zur Datenmanipulation, einschließlich der DataTable-Klasse.

 using System.Data;
 using System.Data;
Imports System.Data
$vbLabelText   $csharpLabel

Als Nächstes können Sie eine Instanz der DataTable-Klasse erstellen. Der einfachste Weg, dies zu tun, ist die Verwendung des Standardkonstruktors, etwa so:

DataTable dt = new DataTable();
DataTable dt = new DataTable();
Dim dt As New DataTable()
$vbLabelText   $csharpLabel

Sie können auch eine DataTable mit einem bestimmten Namen erstellen, indem Sie einen Zeichenfolgenparameter an den Konstruktor übergeben:

DataTable dt = new DataTable("Employees");
DataTable dt = new DataTable("Employees");
Dim dt As New DataTable("Employees")
$vbLabelText   $csharpLabel

DataTable-Methoden

Hinzufügen von Spalten

Sobald Sie eine DataTable erstellt haben, können Sie ihr Spalten hinzufügen. Um eine Spalte hinzuzufügen, müssen Sie zuerst eine Instanz der DataColumn-Klasse erstellen und deren Eigenschaften festlegen, wie z.B. ColumnName und DataType.

Hier ein Beispiel für das Hinzufügen von drei Spalten zu einer 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

Sie können der Datentabelle mehrere Spalten wie die Id-Spalte hinzufügen.

Hinzufügen von Datenzeilen

Nachdem Sie die Spalten definiert haben, können Sie 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 befüllen.

Hier ist ein Beispiel, wie man eine neue Zeile zu einem DataTable hinzufügt:

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

Sie können auch mehrere DataTable-Zeilen gleichzeitig hinzufügen, indem Sie dieselbe Methode in einer Schleife verwenden.

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

Im obigen Code haben wir drei Datenzeilen hinzugefügt.

Zugriff auf Daten

Sie können auf die in einer DataTable gespeicherten Daten zugreifen, indem Sie durch deren Rows und Columns Sammlungen iterieren. Hier ist ein Beispiel, wie man die Inhalte einer DataTable in der Konsole anzeigt:

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

Ändern von Daten

Sie können die Daten in einer DataTable ändern, indem Sie die Werte in ihren DataRow-Objekten aktualisieren. Hier ein Beispiel, wie Sie das Alter eines bestimmten Mitarbeiters aktualisieren können:

DataRow employeeRow = dt.Rows.Find(1); // Find the row with the specified primary key
if (employeeRow != null)
{
    employeeRow ["Age"] = 35;
}
DataRow employeeRow = dt.Rows.Find(1); // Find the row with the specified primary key
if (employeeRow != null)
{
    employeeRow ["Age"] = 35;
}
Dim employeeRow As DataRow = dt.Rows.Find(1) ' Find the row with the specified primary key
If employeeRow IsNot Nothing Then
	employeeRow ("Age") = 35
End If
$vbLabelText   $csharpLabel

Löschen von Zeilen

Sie können eine Zeile aus einem DataTable löschen, indem Sie die Delete-Methode auf einem DataRow-Objekt aufrufen:

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

Beachten Sie, dass das Aufrufen von Delete bei einem DataRow die Zeile nur zur Löschung markiert. Sie müssen die AcceptChanges-Methode auf dem DataTable aufrufen, um die gelöschten Zeilen dauerhaft zu entfernen.

Mehrere Tabellen verwalten

In einigen Fällen müssen Sie vielleicht 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.

Abfragen von Daten mit LINQ

LINQ (Language Integrated Query) ist ein leistungsstarkes Feature in C#, das es Ihnen ermöglicht, Daten aus verschiedenen Datenquellen abzufragen, einschließlich DataTable-Objekten. Um LINQ mit DataTables zu verwenden, müssen Sie den Namespace System.Linq importieren. Hier ein Beispiel für das Filtern von Mitarbeitern, die älter als 25 Jahre sind, mit LINQ:

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

Datenansicht: 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 einer DataTable zu erstellen. Dies ist besonders nützlich, wenn Sie die Daten in einem UI-Steuerelement wie einem DataGridView anzeigen müssen. Wir können auch Datenbindung verwenden, um Daten aus einem DataTable in das DataGridView-Steuerelement hinzuzufügen.

Hier ein Beispiel für die Erstellung eines DataViews zum Filtern und Sortieren der Mitarbeiter nach ihrem Alter:

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

Exportieren von DataTable in PDF mit IronPDF

IronPDF ist ein leistungsstarker HTML-zu-PDF-Konverter, vollgepackt mit benutzerfreundlichen PDF-Bearbeitungsfunktionen, 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();

        // 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");
    }
}
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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. 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")

		' 2. 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")

		' 3. 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

In diesem Abschnitt werden wir lernen, wie man eine DataTable mit IronPDF in ein PDF-Dokument exportiert.

Zunächst müssen Sie das IronPDF NuGet-Paket installieren. Öffnen Sie die Paketmanager-Konsole in Visual Studio und führen Sie den folgenden Befehl aus:

Install-Package IronPdf

Sobald das Paket installiert ist, können Sie damit beginnen, die erforderlichen Namespaces in Ihren Code zu importieren:

using IronPdf;
using System.IO;
using IronPdf;
using System.IO;
Imports IronPdf
Imports System.IO
$vbLabelText   $csharpLabel

Als Nächstes erstellen Sie eine Hilfsmethode, die die DataTable in eine HTML-Tabelle umwandelt, da IronPDF HTML zum Rendern von Inhalten in PDF-Dokumenten verwendet:

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

Nun können Sie die von IronPDF bereitgestellte HtmlToPdf-Klasse 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 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

Die ExportDataTableToPdf-Methode erstellt eine DataTable aus der HTML-Tabelle und speichert sie in der PDF-Datei.

Rufen Sie schließlich die Methode ExportDataTableToPdf mit den entsprechenden Parametern auf, um Ihre DataTable zu exportieren:

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

Dies wird eine PDF-Datei mit dem Namen "Employees.pdf" erstellen, die die Inhalte Ihrer DataTable in einem tabellarischen Format enthält.

C# DataTable (Wie es für Entwickler funktioniert - Tutorial) - Abbildung 1

Schlussfolgerung

In diesem Tutorial haben Sie die Grundlagen von DataTables in C# gelernt und wie Sie ein DataTable mithilfe der IronPDF-Bibliothek in ein PDF-Dokument exportieren können. Durch die Einbeziehung der Primärschlüsselspalte, der Dataset-Variablen und der DataView zum Filtern und Sortieren erhalten Sie eine größere Kontrolle und Flexibilität über Ihre Daten. Jetzt sollten Sie ein gutes Verständnis von DataTables haben und wissen, wie Sie IronPDF in Verbindung mit DataTables verwenden können, um professionell aussehende PDF-Berichte in Ihren C#-Anwendungen zu erstellen.

IronPDF bietet eine kostenlose Testversion seiner Funktionen an, damit Sie seine Fähigkeiten erkunden können, bevor Sie sich zum Kauf verpflichten.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
Installieren von NuGet Powershell (Anleitung zur Funktionsweise für Entwickler)
NÄCHSTES >
Wie man .NET Fiddle in C# verwendet