IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Datatable to List (Geliştiriciler için Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 20 Haziran 2025

Converting DataTable to List in C#

Genellikle C# ile programlama alanında, bir DataTable'yi listeye dönüştürme ihtiyacı ortaya çıkar. Birçok yeni başlayan bu görevin üzerinde takılıp kalırken, genelde yeterince kapsamlı olmayan yanıtlarla karşılaşırlar. Bu eğitim, o boşluğu doldurmayı ve C# dilinde bir DataTable'yi listeye dönüştürmenin nasıl yapılacağını açıklayan net bir kılavuz sunmayı hedefliyor.

DataTable nedir?

Dönüşüm sürecine dalmadan önce, bir DataTable'nin ne olduğu önemlidir. C# dilinde, bir DataTable nesnesi, satır ve sütunlardan oluşan bellek içi bir veritabanı tablosunun temsildir. System.Data ad alanının bir parçasıdır.

Bu eğitim için, dt adlı bir örnek DataTable kullanalım. Bu, aşağıda gösterildiği gibi görselleştirilebilir:

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

Dönüşüme Başlarken

Elinizdeki DataTable dt'ye baktığınızda, 'Bunu nasıl dönüştürürüm?' diye düşünüyorsunuz. Endişelenmeyin; bu, araştırma çabasını gösteren bir soru. DataTable'yı listeye dönüştürmenin iki temel yöntemi vardır:

  1. LINQ (Dil Entegre Sorgusu) kullanmak
  2. Klasik foreach döngüsünü kullanarak

LINQ Kullanarak Dönüşüm

LINQ yöntemi, C# dilinde koleksiyonları deklaratif bir şekilde sorgulama imkanı sunan güçlü bir araçtır. Bunun nasıl yapılabileceğine bir göz atalım.

Aşağıdaki gibi bir yöntem tanımlayın:

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

Yukarıdaki kodda, DataTable dt üzerinde AsEnumerable() genişletme metodu çağrıldı. Bu, her DataRow üzerinde LINQ kullanmamızı sağlıyor. Yöntem, DataTable'dan bir satırı temsil eden her dinamik nesne için bir liste oluşturur.

foreach Döngüsü Kullanarak Dönüşüm

C# dilinde koleksiyonlar üzerinde yinelenmiş ve test edilmiş bir yol foreach döngüsüdür. Bu yöntem biraz daha uzun görünebilir, ancak anlaması ve uygulaması kolaydır.

İşte nasıl çalıştığı:

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

ForeachMethod yönteminde, DataTable bir foreach döngüsü kullanılarak yinelemeyle işlenir. Her DataRow için yeni bir Category nesnesi oluşturulur ve list'ye eklenir.

Gelişmiş Dönüştürme Tekniklerini Genişletme

C# dilinde bir DataTable'yi listeye dönüştürmenin temellerini öğrendikten sonra, bu süreci optimize edebilecek ve daha karmaşık senaryolara uyarlayabilecek birkaç ileri teknik ve düşünce bulunur. Bazı bu tekniklere daha derinlemesine bakalım.

Reflective Kullanarak DataTable'yi Listeye Dönüştürme

Reflection, C#'da türlerin meta verilerini çalışma zamanında incelemenizi sağlayan güçlü bir araçtır. Gücünü kullanmaya başlayalım:

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

Bu ConvertDataTableToList yöntemi, DataRow ve DataTable üzerindeki her bir üzerinde yansıtmalı bir işlem yapar. Her sütun için, genel nesnede eşleşen bir özellik arar ve değerini ayarlar. Bu yaklaşım, herhangi bir DataTable'yi genel nesneler listesine dönüştüren yüksek derecede tekrar kullanılabilir bir yöntem sunar.

Kullanım

Yukarıdaki kodu kullanmak için, yöntemi türü belirterek basitçe çağırın:

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

Bu yöntemle, belirli veri tablolarını belirli nesne türlerine dönüştürmekle sınırlı kalmıyorsunuz. Bunun yerine, çeşitli veri senaryolarını yönetebilecek çok yönlü bir araca sahip oluyorsunuz.

Performans Dikkat Edilecek Hususlar

Yansıma yöntemi güçlü olmakla birlikte, özellikle büyük veri tablolarıyla çalışırken daha yavaş olabileceğini belirtmekte fayda var. Performansı ölçmek ve bunu kodun yeniden kullanılabilirliği ve sürdürülebilirliği ile karşılaştırmak her zaman çok önemlidir.

.NET Geliştiricileri için Iron Suite Araç Seti

C# dilinde DataTable'yi listeye dönüştürmenin inceliklerine daldık, bazen dış araçlara güvenmek geliştirme sürecimizi basitleştirebilir, özellikle daha karmaşık işlemlerde. Iron Suite'in devreye girdiği yer burası.

IronPDF: PDF Güç Merkezi

C# DataTable'dan Listeye (Geliştiriciler İçin Nasıl Çalışır) Şekil 1 - IronPDF for .NET: C# PDF Kütüphanesi

C# ile PDF'lerle çalışırken, IronPDF bir oyun değiştiricidir. Dönüştürdüğünüz DataTable'yi bir listeye dönüştürdüğünüzü ve ardından bir PDF raporu oluşturmanız gerektiğini hayal edin. IronPDF, PDF belgelerini zahmetsizce oluşturabilir, düzenleyebilir ve verileri çıkarabilir, veri tablo türevi bilgilerinizi profesyonel görünümlü raporlara dönüştürme sürecini kolaylaştırır.

IronPDF'nin ana özelliği, düzenlerin ve stillerin korunmasını sağlayan HTML to PDF fonksiyonelliğidir. Web içeriğinden PDF oluşturur, raporlar, faturalar ve dokümantasyon için uygundur. HTML dosyalarını, URL'leri ve HTML metinlerini zahmetsizce PDF dosyalarına dönüştürebilirsiniz.

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: Excel İşlemlerinde Mükemmellik

C# DataTable'dan Listeye (Geliştiriciler İçin Nasıl Çalışır) Şekil 2 - IronXL for .NET: C# Excel Kütüphanesi

Eğer DataTable dönüşümünüz Excel ile ilgili işleri gerektiriyorsa, IronXL başvurulacak araçtır. Bu ürün, Excel tablolarını okuma, düzenleme ve oluşturma işlemlerini sorunsuz bir şekilde sağlar. Tablo-veri-listesine dönüştürme ile elinizde, verilerinizi Excel formatına aktarmak IronXL ile inanılmaz derecede basit hale gelir.

IronOCR: Metni Tanınır Hale Getirmek

C# DataTable'dan Listeye (Geliştiriciler İçin Nasıl Çalışır) Şekil 3 - IronOCR for .NET: C# OCR Kütüphanesi

Bazı zamanlarda DataTable görüntü tabanlı veriler içerebilir veya görüntülerden metin çıkarmanız gerekebilir. Burası, IronOCR'un parladığı yerdir. Bu, .NET geliştiricilerinin görüntülerden metin okumasını sağlar, bu durumda DataTable dönüştürme işlemleriniz metin içeren görüntüler içeriyorsa tamamlayıcı bir araç olur.

IronBarcode: Satır Aralarını Okuma

C# DataTable'dan Listeye (Geliştiriciler İçin Nasıl Çalışır) Şekil 4 - IronBarcode for .NET: C# Barcode Kütüphanesi

Son olarak, IronBarcode, uygulamalarınızdaki herhangi bir barcode işlemi için başvuracağınız araçtır. Varsayalım ki DataTable ya da bunu dönüştürdüğünüz liste ürün bilgileri ve barkodları içeriyor. Bu durumda, IronBarcode, ham ürün verileri ile taranabilir barkod bilgisi arasındaki boşluğu kapatarak barkodları okuma ve oluşturma için verimli bir mekanizma sağlar.

Sonuç

C# geliştiricileri için DataTable'yi elle kullanma ve dönüştürme yöntemleri önemliyken, Iron Suite tarafından sağlanan güçlü araçları entegre etmek, verimliliğinizi ve yeteneklerinizi kat kat artırabilir. Her ürün lisansının $999'den başladığı ve her ürünün bir ücretsiz deneme sunduğu dikkat çekicidir. Bu araçlara yatırım yapmayı düşünüyorsanız, cazip bir teklif var: tüm Iron Suite'i sadece iki ürün fiyatına edinebilirsiniz. Böylesine kapsamlı çözümleri benimsemek, .NET geliştirme çabalarınızın kalitesini ve verimliliğini şüphesiz artırabilir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez