Passer au contenu du pied de page
.NET AIDE

C# DataTable (Comment ça fonctionne pour les développeurs tutoriel)

Bienvenue dans ce tutoriel sur les DataTables en C#. Un DataTable est une structure de données puissante fournie par le framework .NET, qui vous permet de stocker, manipuler et interroger des données sous forme tabulaire. Dans ce tutoriel, nous explorerons les bases des DataTables en C#, y compris la création et la modification de DataTables, l'ajout de colonnes et de lignes, l'interrogation des données, et l'utilisation de DataView pour le filtrage et le tri.

À la fin de ce tutoriel, vous aurez une bonne compréhension de la façon d'utiliser les DataTables dans vos applications C#. Commençons !

Création d'un DataTable

Pour créer un DataTable en C#, vous devez d'abord importer l'espace de noms System.Data. Cet espace de noms contient diverses classes et méthodes liées à la manipulation des données, y compris la classe DataTable.

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

Ensuite, vous pouvez créer une instance de la classe DataTable. Le moyen le plus simple de le faire est en utilisant le constructeur par défaut, comme ceci :

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

Vous pouvez également créer un DataTable avec un nom spécifique en passant un paramètre de type chaîne de caractères au constructeur :

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

Méthodes du DataTable

Ajout de colonnes

Une fois que vous avez créé un DataTable, vous pouvez commencer à y ajouter des colonnes. Pour ajouter une colonne, vous devez d'abord créer une instance de la classe DataColumn et définir ses propriétés, telles que ColumnName et DataType.

Voici un exemple de la manière d'ajouter trois colonnes à un 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

Vous pouvez ajouter plusieurs colonnes comme la colonne Id dans le tableau de données.

Ajout de lignes de données

Après avoir défini les colonnes, vous pouvez commencer à ajouter des lignes au DataTable. Pour ajouter une ligne, vous devez créer une nouvelle instance de la classe DataRow et remplir ses champs avec les données requises.

Voici un exemple de la manière d'ajouter une nouvelle ligne à un 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

Vous pouvez également ajouter plusieurs lignes de DataTable à la fois en utilisant la même méthode dans une boucle.

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

Dans le code ci-dessus, nous avons ajouté trois lignes de données.

Accès aux données

Vous pouvez accéder aux données stockées dans un DataTable en parcourant ses collections Rows et Columns. Voici un exemple de la manière d'afficher le contenu d'un DataTable dans la console :

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

Modification des données

Vous pouvez modifier les données d'un DataTable en mettant à jour les valeurs dans ses objets DataRow. Voici un exemple de la manière de mettre à jour l'âge d'un employé spécifique :

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

Suppression de lignes

Vous pouvez supprimer une ligne d'un DataTable en appelant la méthode Delete sur un objet DataRow :

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

Gardez à l'esprit qu'appeler Delete sur un DataRow ne fait que marquer la ligne pour suppression. Vous devez appeler la méthode AcceptChanges sur le DataTable pour supprimer définitivement les lignes supprimées.

Gestion de plusieurs tables

Dans certains cas, vous pourriez avoir besoin de travailler avec plusieurs tableaux de données simultanément. Vous pouvez créer une variable ensemble de données pour stocker plusieurs objets DataTable et gérer les relations entre eux.

Interrogation des données avec LINQ

LINQ (Language Integrated Query) est une fonctionnalité puissante en C# qui vous permet d'interroger des données à partir de diverses sources de données, y compris des objets DataTable. Pour utiliser LINQ avec les DataTables, vous devez importer l'espace de noms System.Linq. Voici un exemple de la manière de filtrer les employés de plus de 25 ans en utilisant 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

DataView : Tri et filtrage

DataView est une autre classe utile fournie par l'espace de noms System.Data qui vous permet de créer une vue triée ou filtrée d'un DataTable. Cela est particulièrement utile lorsque vous devez afficher les données dans un contrôle UI comme un DataGridView. Nous pouvons également effectuer une liaison de données pour ajouter des données au contrôle DataGridView à partir d'un DataTable.

Voici un exemple de la manière de créer un DataView pour filtrer et trier les employés selon leur âge :

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

Exportation du DataTable en PDF avec IronPDF

IronPDF is a powerful convertisseur HTML en PDF, doté de fonctionnalités de manipulation de PDF conviviales, permettant aux développeurs de créer, lire et éditer des documents PDF au sein des applications .NET.

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

Dans cette section, nous apprendrons comment exporter un DataTable vers un document PDF en utilisant IronPDF.

Tout d'abord, vous devez installer le paquet NuGet IronPDF. Ouvrez la console du gestionnaire de paquets dans Visual Studio et exécutez la commande suivante :

Install-Package IronPdf

Une fois le paquet installé, vous pouvez commencer par importer les espaces de noms nécessaires dans votre code :

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

Ensuite, créez une méthode d'assistance qui convertit le DataTable en un tableau HTML, car IronPDF utilise l'HTML pour rendre le contenu dans les documents 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

Maintenant, vous pouvez utiliser la classe HtmlToPdf fournie par IronPDF pour rendre le tableau HTML et l'enregistrer en tant que fichier 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

La méthode ExportDataTableToPdf crée un DataTable du tableau HTML et l'enregistre dans le fichier PDF.

Enfin, appelez la méthode ExportDataTableToPdf avec les paramètres appropriés pour exporter votre 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

Cela créera un fichier PDF nommé "Employees.pdf" contenant le contenu de votre DataTable sous un format tabulaire.

DataTable C# (Comment ça fonctionne pour les développeurs Tutoriel) - Figure 1

Conclusion

Dans ce tutoriel, vous avez appris les bases des DataTables en C# et comment exporter un DataTable vers un document PDF en utilisant la bibliothèque IronPDF. En incorporant la colonne clé primaire, les variables d'ensemble de données, et le DataView pour le filtrage et le tri, vous aurez plus de contrôle et de flexibilité sur vos données. Vous devriez maintenant avoir une bonne compréhension des DataTables et comment utiliser IronPDF en conjonction avec les DataTables pour créer des rapports PDF d'aspect professionnel dans vos applications C#.

IronPDF offre un essai gratuit de ses fonctionnalités, vous permettant d'explorer ses capacités avant de vous engager dans un achat.

Questions Fréquemment Posées

Qu'est-ce qu'un DataTable en C#?

Un DataTable est une structure de données polyvalente dans le framework .NET qui permet aux développeurs de stocker, manipuler et interroger des données sous forme tabulaire, ce qui est essentiel pour gérer des données structurées dans les applications.

Comment puis-je convertir un DataTable en document PDF en C#?

Pour convertir un DataTable en document PDF en C#, commencez par transformer le DataTable en une table HTML. Utilisez la classe HtmlToPdf d'IronPDF pour rendre le HTML en document PDF et sauvegardez le fichier résultant.

Comment créez-vous un DataTable en C#?

La création d'un DataTable en C# implique l'importation de l'espace de noms System.Data et l'instanciation de la classe DataTable en utilisant son constructeur, en fournissant éventuellement un nom spécifique pour le DataTable.

Quelles sont les étapes pour ajouter des colonnes à un DataTable?

Pour ajouter des colonnes à un DataTable, créez des instances de la classe DataColumn, configurez des propriétés comme ColumnName et DataType, et ajoutez-les à la collection Columns du DataTable.

Comment puis-je exporter des données d'un DataTable au format PDF à des fins de reporting?

Vous pouvez exporter des données d'un DataTable au format PDF en convertissant le DataTable en un format de table HTML, puis en utilisant IronPDF pour rendre ce HTML en document PDF, créant ainsi des rapports de qualité professionnelle.

Comment ajoutez-vous des lignes à un DataTable en C#?

Pour ajouter des lignes à un DataTable en C#, créez une nouvelle instance de DataRow, remplissez-la avec des données, et ajoutez-là à la collection Rows du DataTable. Ce processus peut être répété pour plusieurs lignes en utilisant une boucle.

Qu'est-ce que LINQ et comment peut-il être utilisé avec les DataTables?

LINQ (Language Integrated Query) est un outil de requête puissant en C# qui permet de filtrer, trier et manipuler des données provenant de diverses sources, y compris les DataTables, pour rationaliser les opérations de données.

Comment puis-je filtrer et trier un DataTable en utilisant un DataView?

Un DataView fournit un moyen pratique de créer une vue filtrée ou triée d'un DataTable. En définissant les propriétés RowFilter et Sort, vous pouvez contrôler l'affichage des données, ce qui est particulièrement utile dans les composants de l'interface utilisateur.

Comment installer la bibliothèque nécessaire pour exporter des DataTables au format PDF?

Pour installer la bibliothèque IronPDF nécessaire à l'exportation des DataTables en PDF, utilisez la console du gestionnaire de packages dans Visual Studio et exécutez la commande : Install-Package IronPdf.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite