Zum Fußzeileninhalt springen
.NET HILFE

C# Datentabelle zu Liste (Wie es für Entwickler funktioniert)

Converting DataTable to List in C#

Oftmals entsteht im Bereich der Programmierung mit C# das Bedürfnis, ein DataTable in eine Liste umzuwandeln. Während viele Anfänger auf diese Aufgabe stoßen, erhalten sie oft Antworten, die einfach nicht umfassend genug sind. Dieses Tutorial zielt darauf ab, diese Lücke zu schließen und eine klare Anleitung zur Umwandlung eines DataTable in eine Liste in C# bereitzustellen.

Was ist ein DataTable?

Bevor Sie in den Umwandlungsprozess eintauchen, ist es entscheidend zu verstehen, was ein DataTable ist. In C# stellt ein DataTable-Objekt eine im Speicher befindliche Datenbanktabelle mit Zeilen und Spalten dar. Es ist Teil des System.Data-Namespaces.

Für dieses Tutorial verwenden wir ein Muster-DataTable namens dt. Dies kann wie unten gezeigt visualisiert werden:

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");
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");
$vbLabelText   $csharpLabel

Einstieg in die Konvertierung

Sie haben also Ihr DataTable dt, und nun starren Sie es an und fragen sich: "Wie konvertiere ich das?". Keine Sorge; das ist eine Frage, die Forschungsbereitschaft zeigt. Es gibt hauptsächlich zwei Methoden, um DataTable in eine Liste umzuwandeln:

  1. Verwendung von LINQ (Language Integrated Query)
  2. Verwenden der klassischen foreach-Schleife

Konvertierung mit LINQ

Die LINQ-Methode ist ein mächtiges Werkzeug in C#, das eine deklarative Art und Weise bietet, Sammlungen abzufragen. Werfen wir einen Blick darauf, wie dies gemacht werden kann.

Definieren Sie eine Methode wie folgt:

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();
}
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();
}
$vbLabelText   $csharpLabel

Im obigen Code wird die Erweiterungsmethode AsEnumerable() auf dem DataTable dt aufgerufen. Dies ermöglicht uns, LINQ auf jedem DataRow im DataTable zu verwenden. Die Methode erstellt eine Liste von dynamischen Objekten, die jeweils eine Zeile aus dem DataTable darstellen.

Umwandlung mit der foreach-Schleife

Die foreach-Schleife ist eine bewährte Methode, um über Sammlungen in C# zu iterieren. Diese Methode mag etwas länger erscheinen, ist aber leicht zu verstehen und umzusetzen.

So funktioniert es:

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; }
}
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; }
}
$vbLabelText   $csharpLabel

Im ForeachMethod-Verfahren wird das DataTable mithilfe einer foreach-Schleife durchlaufen. Für jedes DataRow wird ein neues Category-Objekt instanziiert und der list hinzugefügt.

Erweiterung der fortgeschrittenen Konvertierungstechniken

Nachdem Sie die Grundlagen der Umwandlung eines DataTable in eine Liste in C# gemeistert haben, gibt es mehrere fortgeschrittene Techniken und Überlegungen, die diesen Prozess optimieren und an komplexere Szenarien anpassen können. Lassen Sie uns tiefer in einige dieser Techniken eintauchen.

Verwendung von Reflection zur Umwandlung von DataTable in eine Liste

Reflection ist ein mächtiges Werkzeug in C#, das es Ihnen ermöglicht, die Metadaten von Typen zur Laufzeit zu inspizieren. Lassen Sie uns die Kraft nutzen:

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;
}
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;
}
$vbLabelText   $csharpLabel

Diese ConvertDataTableToList-Methode verwendet Reflection, um über jeden DataRow und jede Spalte im DataTable zu iterieren. Für jede Spalte sucht es nach einer passenden Eigenschaft im generischen Objekt und setzt deren Wert. Dieser Ansatz ermöglicht eine hochgradig wiederverwendbare Methode, die jede DataTable in eine Liste von generischen Objekten umwandeln kann.

Nutzung

Um den obigen Code zu verwenden, rufen Sie einfach die Methode auf, indem Sie den Typ angeben:

List<Category> categories = ConvertDataTableToList<Category>(dt);
List<Category> categories = ConvertDataTableToList<Category>(dt);
$vbLabelText   $csharpLabel

Mit dieser Methode sind Sie nicht länger darauf beschränkt, spezifische Datentabellen in spezifische Objekttypen zu konvertieren. Stattdessen haben Sie ein vielseitiges Werkzeug zur Hand, das eine Vielzahl von Datenszenarien bewältigen kann.

Erwägungen zur Leistung

Obwohl die Reflection-Methode mächtig ist, ist es erwähnenswert, dass sie langsamer sein kann, insbesondere bei großen Datentabellen. Es ist immer wichtig, die Leistung zu messen und sie gegen die Vorteile der Code-Wiederverwendbarkeit und Wartbarkeit abzuwägen.

Iron Suite Toolkit for .NET-Entwickler

Auch wenn wir uns in die Feinheiten der Umwandlung von DataTable in Listen in C# vertieft haben, kann die Verwendung externer Tools unseren Entwicklungsprozess vereinfachen, insbesondere bei komplexeren Operationen. Hier kommt die Iron Suite ins Spiel.

IronPDF: Das PDF-Kraftpaket

C# DataTable to List (How It Works For Developers) Abbildung 1 - IronPDF for .NET: Die C# PDF-Bibliothek

Wenn es darum geht, mit PDFs in C# zu arbeiten, ist IronPDF ein Game-Changer. Stellen Sie sich vor, Sie haben Ihr DataTable in eine Liste umgewandelt und müssen dann einen PDF-Bericht daraus erstellen. IronPDF kann problemlos PDFs erstellen, bearbeiten und Daten daraus extrahieren, und so den Prozess der Übersetzung Ihrer aus der Datentabelle gewonnenen Informationen in professionell aussehende Berichte rationalisieren.

Die Hauptfunktionalität von IronPDF ist seine HTML-zu-PDF-Funktion, die sicherstellt, dass Layouts und Stile beibehalten werden. Es generiert PDFs aus Webinhalt, geeignet für Berichte, Rechnungen und Dokumentation. Sie können HTML-Dateien, URLs und HTML-Strings mühelos in PDF-Dateien konvertieren.

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");
    }
}
$vbLabelText   $csharpLabel

IronXL: Herausragend in Excel-Operationen

C# DataTable to List (How It Works For Developers) Abbildung 2 - IronXL for .NET: Die C# Excel-Bibliothek

Wenn Ihre DataTable-Umwandlung zu Excel-bezogenen Aufgaben führt, ist IronXL das geeignete Werkzeug. Dieses Produkt bietet nahtlose Operationen zum Lesen, Bearbeiten und Erstellen von Excel-Tabellenkalkulationen. Mit der Konvertierung von Datentabellen zu Listen in der Hand wird der Export Ihrer Daten in ein Excel-Format mit IronXL unglaublich einfach.

IronOCR: Text wiedererkennbar machen

C# DataTable to List (How It Works For Developers) Abbildung 3 - IronOCR for .NET: Die C# OCR-Bibliothek

Es könnte Zeiten geben, in denen Ihr DataTable aus bildbasierten Daten besteht oder Sie Text aus Bildern extrahieren müssen. Hier kommt IronOCR ins Spiel. Es ermöglicht .NET-Entwicklern, Text aus Bildern zu lesen, was es zu einem ergänzenden Werkzeug macht, wenn Ihre DataTable-Umwandlungsoperationen Bilder mit Textinformationen umfassen.

IronBarcode: Zwischen den Zeilen lesen

C# DataTable to List (How It Works For Developers) Abbildung 4 - IronBarcode for .NET: Die C# Barcode-Bibliothek

Schließlich ist IronBarcode das Werkzeug der Wahl für alle Barcode-Operationen in Ihren Anwendungen. Angenommen, Ihr DataTable oder die Liste, in die Sie es konvertiert haben, besteht aus Produktinformationen mit Barcodes. In diesem Fall bietet IronBarcode einen effizienten Mechanismus zum Lesen und Erzeugen von Barcodes, der die Lücke zwischen Rohproduktdaten und scannbaren Barcodeinformationen schließt.

Abschluss

C# DataTable to List (How It Works For Developers) Abbildung 5 - Iron Suite: Lizenzinformationen

Während die manuellen Methoden zur Manipulation und Umwandlung von DataTable für jeden C#-Entwickler von entscheidender Bedeutung sind, kann die Integration leistungsstarker Werkzeuge wie der von Iron Suite bereitgestellten Ihre Produktivität und Fähigkeiten exponentiell steigern. Es ist bemerkenswert, dass jede Produktlizenz bei $799 beginnt, und noch eindrucksvoller ist, dass jedes Produkt eine kostenlose Testversion bietet. Wenn Sie darüber nachdenken, in diese Tools zu investieren, gibt es ein verlockendes Angebot: Sie können die gesamte Iron Suite für den Preis von nur zwei Produkten erwerben. Solche umfassenden Lösungen zu erkennen, kann zweifellos die Qualität und Effizienz Ihrer .NET-Entwicklungsbemühungen erheblich steigern.

Häufig gestellte Fragen

Was ist ein DataTable in C#?

Ein DataTable in C# ist eine In-Memory-Darstellung einer Datenbanktabelle, bestehend aus Zeilen und Spalten. Es ist Teil des System.Data-Namespace.

Wie kann ich ein DataTable in eine Liste in C# mit LINQ konvertieren?

Sie können ein DataTable mit LINQ in eine Liste umwandeln, indem Sie die Methode AsEnumerable() verwenden, um über jede DataRow zu iterieren und Select nutzen, um eine Liste von dynamischen Objekten zu erstellen, die jede Zeile darstellen.

Wie funktioniert der Prozess der Umwandlung eines DataTable in eine Liste mit einer foreach-Schleife in C#?

Um ein DataTable mit einer foreach-Schleife in eine Liste umzuwandeln, iterieren Sie über jede DataRow, erstellen Sie ein neues Objekt für jede Zeile, füllen Sie dessen Eigenschaften aus der DataRow, und fügen Sie es einer Liste hinzu.

Wie verbessert Reflection die DataTable-Umwandlung in C#?

Die Verwendung von Reflection ermöglicht eine hochgradig wiederverwendbare Methode, die jedes DataTable in eine Liste von generischen Objekten umwandeln kann, indem DataTable-Spalten dynamisch auf Objekteigenschaften abgebildet werden.

Wie kann IronPDF bei der Verarbeitung von PDFs aus DataTables helfen?

IronPDF ermöglicht es Entwicklern, PDF-Dokumente zu erstellen, zu bearbeiten und Daten daraus zu extrahieren, was nützlich ist, um Berichte aus von DataTable abgeleiteten Daten zu generieren.

Welche Vorteile bietet IronXL für Excel-Operationen in C#?

IronXL erleichtert den Export von Daten aus DataTables in das Excel-Format, sodass Entwickler Excel-Tabellen einfach lesen, bearbeiten und effizient erstellen können.

Auf welche Weise kann IronOCR auf DataTables angewendet werden?

IronOCR kann Text aus Bildern innerhalb von DataTables lesen, sodass Entwickler bildbasierte Daten, die Textinformationen enthalten, verarbeiten können.

Wie verbessert IronBarcode die DataTable-Operationen mit Barcodes?

IronBarcode bietet die Möglichkeit, Barcodes zu lesen und zu erzeugen, was vorteilhaft ist für DataTables oder Listen, die Produktinformationen mit Barcodes enthalten.

Welche Leistungsgesichtspunkte sollten bei der Verwendung von Reflection zur DataTable-Umwandlung berücksichtigt werden?

Obwohl Reflection Flexibilität bietet, kann es langsamer als andere Methoden sein, insbesondere bei großen Datentabellen, daher ist es wichtig, die Leistung mit Wiederverwendbarkeit und Wartbarkeit in Einklang zu bringen.

Gibt es Lizenzierungs- und Testmöglichkeiten für Iron Software-Produkte?

Ja, der Artikel erwähnt, dass es Lizenzierungs- und Testmöglichkeiten für die Iron Suite-Produkte gibt, die es Entwicklern ermöglichen, die Werkzeuge vor dem Kauf zu evaluieren.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

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

Weiterlesen

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me