IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

Tabela danych C# do listy (jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 20 czerwca 2025

Converting DataTable to List in C#

Często, w sferze programowania z C#, pojawia się potrzeba konwersji DataTable na listę. Podczas gdy wielu nowicjuszy natrafia na to zadanie, często spotykają się oni z odpowiedziami, które po prostu nie są wystarczająco wyczerpujące. Ten poradnik ma na celu wypełnienie tej luki i dostarczenie jasnego przewodnika, jak przekonwertować DataTable na listę w C#.

Czym jest DataTable?

Przed zagłębieniem się w proces konwersji, ważne jest, aby zrozumieć, czym jest DataTable. W C#, obiekt DataTable jest reprezentacją tabeli bazy danych w pamięci z wierszami i kolumnami. Jest to część przestrzeni nazw System.Data.

Dla celów tego poradnika, użyjemy przykładowej DataTable o nazwie dt. Mozna to zobrazowac w nastepujacy sposob:

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");

Rozpoczecie konwersji

A więc, masz swój DataTable dt i teraz patrzysz na niego myśląc, 'Jak to przekonwertować?'. Nie martw sie; to pytanie pokazuje, ze jestes dociekliwym badaczem. Istnieją głównie dwie metody konwersji DataTable na listę:

  1. Using LINQ (Language Integrated Query)
  2. Używanie klasycznej pętli foreach

Konwersja z uzyciem LINQ

Metoda LINQ to potężne narzędzie w C#, które umożliwia deklaratywne zapytania do kolekcji. Przyjrzyjmy się, jak można to zrobić.

Zdefiniuj metode w nastepujacy sposob:

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

W powyższym kodzie wywoływana jest metoda rozszerzająca AsEnumerable() na DataTable dt. Pozwala to na użycie LINQ na każdym DataRow w DataTable. Metoda tworzy listę dynamicznych obiektów, z których każdy reprezentuje wiersz z DataTable.

Konwersja przy użyciu pętli foreach

Pętla foreach to sprawdzony sposób iteracji przez kolekcje w C#. Ta metoda moze wydawac sie troche dluzsza, ale jest latwa do zrozumienia i wdrożenia.

Oto jak to działa:

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; }
}

W metodzie ForeachMethod, DataTable jest iterowany przy użyciu pętli foreach. Dla każdego DataRow, tworzony jest nowy obiekt Category i dodawany do list.

Rozszerzenie zaawansowanych technik konwersji

Po opanowaniu podstaw konwersji DataTable na listę w C#, istnieje kilka zaawansowanych technik i rozważań, które mogą zoptymalizować ten proces i dostosować go do bardziej złożonych scenariuszy. Zagłębmy się w niektóre z tych technik.

Używanie Reflection do konwersji DataTable na listę

Refleksja to potężne narzędzie w C#, które pozwala na sprawdzanie metadanych typów podczas wykonywania programu. Wykorzystajmy jego moc:

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;
}

Ta metoda ConvertDataTableToList wykorzystuje refleksję, iterując przez każdy DataRow i kolumnę w DataTable. Dla każdej kolumny wyszukuje pasującą właściwość w obiekcie generycznym i ustawia jej wartość. Takie podejście pozwala na stworzenie wysoce wielokrotnego użytku metody, która może konwertować każdy DataTable na listę obiektów generycznych.

Zastosowanie

Aby użyć powyższego kodu, wystarczy wywołać metodę, określając typ:

List<Category> categories = ConvertDataTableToList<Category>(dt);

Dzięki tej metodzie nie jesteś już ograniczony do konwersji konkretnych tabel danych na określone typy obiektów. Zamiast tego masz do dyspozycji wszechstronne narzędzie, które może obsługiwać różnorodne scenariusze danych.

Kwestie związane z wydajnością

Chociaż metoda refleksji jest potężna, warto zauważyć, że może działać wolniej, zwłaszcza w przypadku dużych tabel danych. Zawsze kluczowe znaczenie ma pomiar wydajności i porównanie jej z korzyściami wynikającymi z możliwości ponownego wykorzystania kodu oraz łatwości jego utrzymania.

Zestaw narzędzi Iron Suite for .NET dla programistów

Podczas gdy zagłębiliśmy się w zawiłości konwersji DataTable na listy w C#, czasami poleganie na zewnętrznych narzędziach może uprościć nasz proces rozwoju, zwłaszcza jeśli chodzi o bardziej złożone operacje. Właśnie tu do gry wkracza Iron Suite.

IronPDF: Potęga w formacie PDF

C# DataTable na listę (Jak to działa dla programistów) Rysunek 1 - IronPDF for .NET: Biblioteka PDF dla C#

Jeśli chodzi o pracę z plikami PDF w języku C#, IronPDF to przełomowe rozwiązanie. Wyobraź sobie, że przekształciłeś swój DataTable w listę, a potem musisz wygenerować z niego raport PDF. IronPDF pozwala bez wysiłku tworzyć, edytować i wyodrębniać dane z dokumentów PDF, usprawniając proces przekształcania informacji pochodzących z tabel danych w profesjonalnie wyglądające raporty.

Główną cechą IronPDF jest funkcja konwersji HTML do PDF, która zapewnia zachowanie układów i stylów. Generuje pliki PDF na podstawie treści internetowych, odpowiednie do raportów, faktur i dokumentacji. Możesz bez wysiłku konwertować pliki HTML, adresy URL i ciągi znaków HTML na pliki 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");
    }
}

IronXL: Doskonałość w operacjach w programie Excel

C# DataTable na listę (Jak to działa dla programistów) Rysunek 2 - IronXL for .NET: Biblioteka Excel dla C#

Jeśli konwersja DataTable prowadzi do potrzeby zadań związanych z Excelem, IronXL jest narzędziem, do którego warto sięgnąć. Ten produkt zapewnia płynne operacje odczytu, edycji i tworzenia arkuszy kalkulacyjnych Excel. Dzięki funkcji konwersji tabeli danych na listę eksportowanie danych do formatu Excel staje się niezwykle proste dzięki IronXL.

IronOCR: Umożliwianie rozpoznawania tekstu

C# DataTable na listę (Jak to działa dla programistów) Rysunek 3 - IronOCR for .NET: Biblioteka OCR dla C#

Mogą być sytuacje, gdy twój DataTable składa się z danych opartych na obrazach, lub potrzebujesz wyodrębnić tekst z obrazów. Właśnie w tym IronOCR pokazuje swoją siłę. Pozwala to programistom .NET czytać tekst z obrazów, co czyni go narzędziem komplementarnym, jeśli operacje konwersji DataTable obejmują obrazy zawierające informacje tekstowe.

IronBarcode: Czytanie między wierszami

C# DataTable na listę (Jak to działa dla programistów) Rysunek 4 - IronBarcode for .NET: Biblioteka Barcode dla C#

Wreszcie, IronBarcode to niezbędne narzędzie do wszelkich operacji związanych z kodami kreskowymi w Twoich aplikacjach. Załóż, że twój DataTable lub lista, na którą go przekonwertowałeś, zawiera informacje o produktach z kodami kreskowymi. W tym przypadku IronBarcode zapewnia wydajny mechanizm odczytu i generowania BARCODE-ów, wypełniając lukę między surowymi danymi produktu a informacjami zawartymi w BARCODE-ach, które można zeskanować.

Wnioski

C# DataTable na listę (Jak to działa dla programistów) Rysunek 5 - Iron Suite: Informacje o licencjach

Chociaż ręczne metody manipulacji i konwersji DataTable są kluczowe dla każdego programisty C#, integracja potężnych narzędzi, takich jak te oferowane przez Iron Suite, może znacznie zwiększyć wydajność i możliwości. Warto zauważyć, że każda licencja produktowa zaczyna się od $999, a co jeszcze bardziej atrakcyjne, każdy produkt oferuje bezpłatną wersję próbną. Jeśli rozważasz inwestycję w te narzędzia, mamy dla Ciebie atrakcyjną ofertę: możesz nabyć cały pakiet Iron Suite za cenę zaledwie dwóch produktów. Wdrożenie tak kompleksowych rozwiązań bez wątpienia podniesie jakość i wydajność Twoich przedsięwzięć związanych z programowaniem w środowisku .NET.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta