C# Datentabelle zu Liste (Wie es für Entwickler funktioniert)
DataTable in Liste umwandeln in C
Beim Programmieren mit C# kommt es häufig vor, dass man eine Zeichenkette vom Typ DataTable in eine Liste umwandeln muss. Viele Anfänger stoßen dabei auf diese Aufgabe, finden aber oft nicht die passenden Lösungen. Dieses Tutorial soll diese Lücke schließen und eine klare Anleitung bieten, wie man ein DataTable in eine Liste in C# umwandelt.
Was ist ein DataTable?
Bevor wir uns mit dem Konvertierungsprozess befassen, ist es wichtig zu verstehen, was ein DataTable ist. In C# ist ein DataTable-Objekt eine Darstellung einer In-Memory-Datenbanktabelle mit Zeilen und Spalten. Es ist Teil des Namespace System.Data.
Für dieses Tutorial verwenden wir ein Beispiel DataTable mit dem Namen 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");
Imports System.Data
Private dt As New DataTable()
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Category", GetType(String))
dt.Rows.Add(1, "Electronics")
dt.Rows.Add(2, "Books")
Einstieg in die Konvertierung
Sie haben also Ihren DataTable dt vor sich und fragen sich nun: "Wie konvertiere ich das?" Keine Sorge; das ist eine Frage, die Forschungsbereitschaft zeigt. Es gibt im Wesentlichen zwei Methoden, um DataTable in eine Liste umzuwandeln:
- Verwendung von LINQ (Language Integrated Query)
- Verwendung der klassischen
foreachSchleife
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();
}
'INSTANT VB NOTE: 'Option Strict Off' is used here since dynamic typing is used:
Option Strict Off
Imports System.Linq
Imports System.Collections.Generic
'INSTANT VB NOTE: In the following line, Instant VB substituted 'Object' for 'dynamic' - this will work in VB with Option Strict Off:
Private Shared Function LinqMethod(ByVal dt As DataTable) As List(Of Object)
Return dt.AsEnumerable().Select(Function(row) New With {
Key .ID = row.Field(Of Integer)("ID"),
Key .Category = row.Field(Of String)("Category")
}).ToList()
End Function
Im obigen Code wird die Erweiterungsmethode AsEnumerable() für DataTable dt aufgerufen. Dies ermöglicht es uns, LINQ auf jedes DataRow in DataTable anzuwenden. Die Methode erzeugt eine Liste dynamischer Objekte, von denen jedes eine Zeile aus der DataTable darstellt.
Konvertierung mit foreach Schleife
Die foreach Schleife ist eine bewährte Methode, um in C# über Sammlungen 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; }
}
Private Shared Function ForeachMethod(ByVal dt As DataTable) As List(Of Category)
Dim list As New List(Of Category)()
' Iterates through each row within the data table
For Each row As DataRow In dt.Rows
Dim category As New Category With {
.ID = Convert.ToInt32(row("ID")),
.Name = row("Category").ToString()
}
list.Add(category)
Next row
Return list
End Function
Public Class Category
Public Property ID() As Integer
Public Property Name() As String
End Class
In der Methode ForeachMethod wird die Liste DataTable mithilfe einer Schleife foreach durchlaufen. Für jedes DataRow wird ein neues Category-Objekt instanziiert und der Liste list hinzugefügt.
Erweiterung der fortgeschrittenen Konvertierungstechniken
Nachdem man die Grundlagen der Umwandlung eines DataTable in eine Liste in C# beherrscht, gibt es mehrere fortgeschrittene Techniken und Überlegungen, mit denen dieser Prozess optimiert und an komplexere Szenarien angepasst werden kann. Lassen Sie uns tiefer in einige dieser Techniken eintauchen.
Verwendung von Reflektion zur Konvertierung 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;
}
Imports System.Reflection
Private Shared Function ConvertDataTableToList(Of T As New)(dt As DataTable) As List(Of T)
Dim list As New List(Of T)()
For Each row As DataRow In dt.Rows
Dim obj As New T()
For Each col As DataColumn In dt.Columns
Dim prop = obj.GetType().GetProperty(col.ColumnName)
If prop IsNot Nothing AndAlso row(col) IsNot DBNull.Value Then
prop.SetValue(obj, row(col))
End If
Next
list.Add(obj)
Next
Return list
End Function
Diese ConvertDataTableToList Methode verwendet Reflektion und iteriert über jedes DataRow und jede Spalte in der DataTable. 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 beliebige DataTable in eine Liste generischer Objekte 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);
Dim categories As List(Of Category) = ConvertDataTableToList(Of Category)(dt)
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 für .NET-Entwickler
Obwohl wir uns eingehend mit den Feinheiten der Umwandlung von DataTable in Listen in C# befasst haben, kann die Verwendung externer Tools unseren Entwicklungsprozess manchmal vereinfachen, insbesondere bei komplexeren Operationen. Hier kommt die Iron Suite ins Spiel.
IronPDF: Das PDF-Kraftpaket

Wenn es darum geht, mit PDFs in C# zu arbeiten, ist IronPDF ein Game-Changer. Stellen Sie sich vor, Sie hätten Ihre DataTable in eine Liste umgewandelt und müssten daraus nun einen PDF-Bericht generieren. 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");
}
}
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
IronXL: Herausragend in Excel-Operationen

Wenn Ihre DataTable-Konvertierung zu einem Bedarf an Excel-bezogenen Aufgaben führt, ist IronXL das richtige Werkzeug dafür. 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

Es kann vorkommen, dass Ihre DataTable aus bildbasierten Daten besteht oder dass Sie Text aus Bildern extrahieren müssen. Hier kommt IronOCR ins Spiel. Es ermöglicht .NET Entwicklern, Text aus Bildern zu lesen und ist somit ein ergänzendes Werkzeug, wenn Ihre DataTable Konvertierungsvorgänge Bilder mit Textinformationen beinhalten.
IronBarcode: Zwischen den Zeilen lesen

Schließlich ist IronBarcode das Werkzeug der Wahl für alle Barcode-Operationen in Ihren Anwendungen. Angenommen, Ihre DataTable-Liste oder die Liste, in die Sie sie 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

Während die manuellen Methoden zur Manipulation und Konvertierung von DataTable für jeden C#-Entwickler unerlässlich sind, kann die Integration leistungsstarker Tools wie denen von Iron Suite Ihre Produktivität und Fähigkeiten exponentiell steigern. Es ist bemerkenswert, dass jede Produktlizenz mit $999 beginnt, und noch attraktiver 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.




