Passer au contenu du pied de page
.NET AIDE

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

Converting DataTable to List in C#

Souvent, dans le domaine de la programmation avec C#, il y a un besoin de convertir un DataTable en une liste. Tandis que de nombreux novices trébuchent sur cette tâche, ils sont souvent confrontés à des réponses qui ne sont tout simplement pas assez exhaustives. Ce tutoriel vise à combler cet écart et à fournir un guide clair sur la façon de convertir un DataTable en liste en C#.

Qu'est-ce qu'un DataTable ?

Avant de plonger dans le processus de conversion, il est crucial de comprendre ce qu'est un DataTable. En C#, un objet DataTable est une représentation d'une table de base de données en mémoire avec des lignes et des colonnes. Il fait partie de l'espace de noms System.Data.

Pour les besoins de ce tutoriel, utilisons un exemple de DataTable nommé dt. Cela peut être visualisé comme illustré ci-dessous :

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

Commencer avec la Conversion

Donc, vous avez votre DataTable dt, et maintenant vous le regardez en vous demandant : " Comment puis-je le convertir ? " Ne vous inquiétez pas ; c'est une question qui montre un effort de recherche. Il existe principalement deux méthodes pour convertir DataTable en une liste :

  1. Utilisation de LINQ (Language Integrated Query)
  2. En utilisant la boucle classique foreach

Conversion en Utilisant LINQ

La méthode LINQ est un outil puissant en C# qui offre un moyen de requêter des collections de manière déclarative. Voyons comment cela peut être fait.

Définissez une méthode comme suit :

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

Dans le code ci-dessus, la méthode d'extension AsEnumerable() est appelée sur le DataTable dt. Cela nous permet d'utiliser LINQ sur chaque DataRow dans le DataTable. La méthode crée une liste d'objets dynamiques, chacun représentant une ligne du DataTable.

Conversion en utilisant la boucle foreach

La boucle foreach est un moyen éprouvé pour itérer sur des collections en C#. Cette méthode peut sembler un peu plus longue, mais elle est facile à comprendre et à mettre en œuvre.

Voici comment cela fonctionne :

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

Dans la méthode ForeachMethod, le DataTable est itéré à l'aide d'une boucle foreach. Pour chaque DataRow, un nouvel objet Category est instancié et ajouté au list.

Développer sur les Techniques de Conversion Avancées

Après avoir maîtrisé les bases de la conversion d'un DataTable en liste en C#, il existe plusieurs techniques avancées et considérations qui peuvent optimiser ce processus et l'adapter à des scénarios plus complexes. Plongeons plus profondément dans certaines de ces techniques.

Utilisation de la réflexion pour convertir DataTable en liste

La réflexion est un outil puissant en C# qui vous permet d'inspecter les métadonnées des types à l'exécution. Exploitons sa puissance :

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

Cette méthode ConvertDataTableToList utilise la réflexion, itérant sur chaque DataRow et colonne dans le DataTable. Pour chaque colonne, elle recherche une propriété correspondante dans l'objet générique et définit sa valeur. Cette approche permet une méthode hautement réutilisable qui peut convertir n'importe quel DataTable en une liste d'objets génériques.

Utilisation

Pour utiliser le code ci-dessus, appelez simplement la méthode en spécifiant le type :

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

Avec cette méthode, vous n'êtes plus limité à convertir des tables de données spécifiques en types d'objets spécifiques. Au lieu de cela, vous avez un outil polyvalent à votre disposition qui peut gérer une variété de scénarios de données.

Considérations de Performance

Bien que la méthode de réflexion soit puissante, il est important de noter qu'elle peut être plus lente, en particulier avec de grandes tables de données. Il est toujours crucial de mesurer les performances et de les comparer aux avantages de la réutilisabilité et de la maintenabilité du code.

Iron Suite Toolkit pour les Développeurs .NET

Alors que nous avons plongé dans les complexités de la conversion de DataTable en listes en C#, parfois, s'appuyer sur des outils externes peut simplifier notre processus de développement, surtout lorsqu'il s'agit d'opérations plus complexes. C'est là que l'Iron Suite entre en jeu.

IronPDF : La Centrale à PDF

C# DataTable en liste (comment cela fonctionne pour les développeurs) Figure 1 - IronPDF for .NET : La bibliothèque PDF en C#

Lorsqu'il s'agit de travailler avec des PDF en C#, IronPDF change la donne. Imaginez avoir converti votre DataTable en une liste et avoir ensuite besoin de générer un rapport en PDF à partir de celle-ci. IronPDF peut créer, éditer, et extraire des données de documents PDF sans effort, rationalisant le processus de traduction de vos informations dérivées de la table de données en rapports professionnels.

La fonctionnalité principale d'IronPDF est sa capacité HTML à PDF, garantissant que les mises en page et les styles sont préservés. Il génère des PDF à partir du contenu web, adaptés pour les rapports, les factures, et la documentation. Vous pouvez convertir des fichiers HTML, des URL, et des chaînes HTML en fichiers PDF sans effort.

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 : Exceller dans les Opérations Excel

C# DataTable en liste (comment cela fonctionne pour les développeurs) Figure 2 - IronXL for .NET : La bibliothèque Excel en C#

Si votre conversion DataTable entraîne un besoin de tâches liées à Excel, IronXL est l'outil vers lequel se tourner. Ce produit offre des opérations sans faille pour lire, éditer, et créer des feuilles de calcul Excel. Avec la conversion de la table de données en liste en main, l'exportation de vos données vers un format Excel devient incroyablement simple avec IronXL.

IronOCR : Rendre le Texte Reconnaissable

C# DataTable en liste (comment cela fonctionne pour les développeurs) Figure 3 - IronOCR for .NET : La bibliothèque OCR en C#

Il peut y avoir des moments où votre DataTable consiste en des données basées sur des images, ou vous devez extraire du texte d'images. C'est là que IronOCR s'illustre. Cela permet aux développeurs .NET de lire du texte à partir d'images, en faisant un outil complémentaire si vos opérations de conversion DataTable impliquent des images contenant des informations textuelles.

IronBarcode : Lire Entre les Lignes

C# DataTable en liste (comment cela fonctionne pour les développeurs) Figure 4 - IronBarcode for .NET : La bibliothèque Barcode en C#

Enfin, IronBarcode est l'outil incontournable pour toute opération de code-barres dans vos applications. Supposons que votre DataTable ou la liste à laquelle vous l'avez converti consiste en des informations de produit avec des codes-barres. Dans ce cas, IronBarcode fournit un mécanisme efficace pour lire et générer des codes-barres, comblant l'écart entre les données produit brutes et les informations de code-barres scannables.

Conclusion

C# DataTable en liste (comment cela fonctionne pour les développeurs) Figure 5 - Iron Suite : Informations sur les licences

Bien que les méthodes manuelles de manipulation et de conversion DataTable soient cruciales pour tout développeur C#, l'intégration d'outils puissants comme ceux fournis par Iron Suite peut augmenter de manière exponentielle votre productivité et vos capacités. Il est à noter que chaque licence de produit commence à partir de $799, et ce qui est encore plus séduisant, c'est que chaque produit offre un essai gratuit. Si vous envisagez d'investir dans ces outils, il y a une offre alléchante sur la table : vous pouvez acquérir l'ensemble de l'Iron Suite pour le prix de seulement deux produits. Adopter de telles solutions complètes peut sans aucun doute élever la qualité et l'efficacité de vos efforts de développement .NET.

Questions Fréquemment Posées

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

Un DataTable en C# est une représentation en mémoire d'une table de base de données, composée de lignes et de colonnes. Il fait partie de l'espace de noms System.Data.

Comment puis-je convertir un DataTable en liste en C# en utilisant LINQ?

Vous pouvez convertir un DataTable en liste en utilisant LINQ en utilisant la méthode AsEnumerable() pour itérer sur chaque DataRow et en utilisant Select pour créer une liste d'objets dynamiques représentant chaque ligne.

Quel est le processus de conversion d'un DataTable en liste en utilisant une boucle foreach en C#?

Pour convertir un DataTable en liste en utilisant une boucle foreach, parcourez chaque DataRow, instanciez un nouvel objet pour chaque ligne, remplissez ses propriétés à partir du DataRow et ajoutez-le à une liste.

Comment la réflexion améliore-t-elle la conversion de DataTable en C#?

L'utilisation de la réflexion permet une méthode hautement réutilisable qui peut convertir n'importe quel DataTable en une liste d'objets génériques en associant dynamiquement les colonnes de DataTable aux propriétés d'objet.

Comment IronPDF peut-il aider à gérer les PDF dérivés des DataTables?

IronPDF permet aux développeurs de créer, éditer et extraire des données de documents PDF, ce qui est utile pour générer des rapports à partir de données dérivées de DataTable.

Quels avantages IronXL offre-t-il pour les opérations Excel en C#?

IronXL facilite l'exportation de données des DataTables au format Excel, permettant aux développeurs de lire, modifier et créer facilement des feuilles de calcul Excel de manière efficace.

De quelles manières IronOCR peut-il être appliqué aux DataTables?

IronOCR peut lire le texte des images au sein des DataTables, permettant aux développeurs de gérer les données basées sur des images contenant des informations textuelles.

Comment IronBarcode améliore-t-il les opérations DataTable avec des codes-barres?

IronBarcode offre la possibilité de lire et de générer des codes-barres, ce qui est bénéfique pour les DataTables ou les listes contenant des informations produit avec des codes-barres.

Quelles considérations de performance doivent être prises en compte lors de l'utilisation de la réflexion pour la conversion de DataTable?

Bien que la réflexion offre de la flexibilité, elle peut être plus lente que d'autres méthodes, surtout avec de grandes tables de données, il est donc important d'équilibrer la performance avec la réutilisabilité et la maintenabilité.

Existe-t-il des opportunités de licence et d'essai disponibles pour les produits Iron Software?

Oui, l'article mentionne qu'il existe des opportunités de licence et d'essai disponibles pour les produits Iron Suite, permettant aux développeurs d'évaluer les outils avant de s'engager dans un achat.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, ...

Lire la suite

Iron Support Team

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