IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

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

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

C# dilinde, GroupBy metodu, bir veri kaynağındaki öğeleri belirli bir anahtar temelinde gruplara organize eden güçlü bir araçtır. Bu metod, tek bir özellik veya birden fazla özelliğe göre öğeleri gruplamak için kullanılabilecek LINQ (Language Integrated Query) parçasıdır ve veri analizi ve manipülasyonu için çok değerlidir. GroupBy metodu, karmaşık veri işlemlerini basitleştirir ve belirli kriterlere göre verilerin verimli bir şekilde organize edilmesi ve alınmasına olanak tanır. Bu blogda GroupBy ve IronPDF Kütüphanesi hakkında konuşacağız.

GroupBy'ın Temelleri

GroupBy metodunun özü, belirli bir anahtar temelinde öğeleri bir araya getirme yeteneğinde yatar. Bu anahtar özelliği, öğelerin nasıl gruplandığını belirler. Örneğin, öğrencilerin yaş anahtar değerine göre bir listesini gruplayabilir, aynı yaşa sahip öğrencileri sınıflandırabilirsiniz. Her grup, bir anahtar değerini ve bu anahtarı paylaşan öğeler koleksiyonunu temsil eder. Anahtar özelliği, dizge, sayı veya hatta anonim bir nesne gibi herhangi bir nesne olabilir, bu da verilerin nasıl gruplandığına esneklik sağlar.

Metod Sözdizimi ile GroupBy Kullanma

C# dilinde, GroupBy metodunu uygulamanın iki yolu vardır: metod sözdizimi ve sorgu sözdizimi. Metod sözdizimi, grup anahtarını tanımlamak için lambda ifadeleri kullanır ve GroupBy işlemini uygulamak için doğrudan bir yaklaşımdır.

Yaşlarına göre bir öğrenci listesini gruplamak için metod sözdizimini kullanan aşağıdaki örneği düşünün:

using System;
using System.Collections.Generic;
using System.Linq;

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class Program
{
    public static void Main()
    {
        List<Student> studentList = new List<Student>
        {
            new Student { Name = "Alice", Age = 20 },
            new Student { Name = "Bob", Age = 20 },
            new Student { Name = "Charlie", Age = 21 }
        };
        
        // Group students by their age using GroupBy
        var groupedResult = studentList.GroupBy(student => student.Age);
        
        foreach (var group in groupedResult)
        {
            Console.WriteLine($"Age Group: {group.Key}");
            
            foreach (var student in group)
            {
                Console.WriteLine($"Student Name: {student.Name}");
            }
        }
    }
}

C# GroupBy (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Önceki kod örneğinden konsol çıktısı

LINQ GroupBy metodu, öğrencileri Age anahtar değerine göre gruplamak için bir lambda ifadesi kullanır. group.Key yaş grubunu temsil eder ve içteki foreach döngüsü, her gruptaki öğrenciler üzerinde iterasyon yaparak adlarını yazdırır.

Sorgu Sözdizimi ile GroupBy Kullanma

Sorgu sözdizimi, SQL benzeri sorgulara benzeyen gruplama işlemlerini gerçekleştirmek için daha ifade edici bir yol sunar. Karmaşık veri dönüşümleri ve çoklu gruplama kriterleri ile ilgilenirken özellikle kullanışlıdır. Önceki örnekteki ile benzer işlevselliği sorgu sözdizimi kullanarak nasıl elde edebileceğiniz işte burada:

using System;
using System.Collections.Generic;
using System.Linq;

public static class Program
{
    public static void Main()
    {
        List<Student> studentList = new List<Student>
        {
            new Student { Name = "Alice", Age = 20 },
            new Student { Name = "Bob", Age = 20 },
            new Student { Name = "Charlie", Age = 21 }
        };
        
        // Group students by their age using query syntax
        var groupedResult = from student in studentList
                            group student by student.Age into ageGroup
                            select new { Age = ageGroup.Key, Students = ageGroup };
                            
        foreach (var group in groupedResult)
        {
            Console.WriteLine($"Age Group: {group.Age}");
            
            foreach (var student in group.Students)
            {
                Console.WriteLine($"Student Name: {student.Name}");
            }
        }
    }
}

Bu kod parçasında, sorgu sözdizimi, metod sözdizimi gibi Age (Yaş) göre öğrencileri gruplar, ancak bazılarına daha okunaklı gelen farklı bir sözdizimi ile.

Birden Fazla Anahtar ve Özellik ile Gruplama

GroupBy metodunun daha gelişmiş bir kullanımı, birden fazla anahtar veya özellik ile veri gruplamayı içerir. Bu teknik, birden fazla değere dayalı olarak daha ayrıntılı veri analizi ve kategorizasyonu sağlar. Anonim nesneler veya demetleri kullanarak, özelliklerin bir kombinasyonuna dayalı olarak öğeleri gruplandırabilir ve uygulamalarınız için daha zengin bir veri yapısı sağlayabilirsiniz.

Örnek: Öğrencileri İsim ve Yaşa Göre Gruplama

İsim ve yaş anahtar değerlerini içeren bir anonim tip gruplama yapılarak, bir listede aynı isim ve yaş anahtar değerlerine sahip öğrencileri tanımlamak amacıyla, öğrencileri sadece yaş anahtar değerine göre değil aynı zamanda isme göre de gruplamanız gereken bir senaryo düşünün.

using System;
using System.Collections.Generic;
using System.Linq;

public static class Program
{
    public static void Main()
    {
        List<Student> studentList = new List<Student>
        {
            new Student { Name = "Alice", Age = 20 },
            new Student { Name = "Alice", Age = 21 },
            new Student { Name = "Bob", Age = 20 },
            new Student { Name = "Charlie", Age = 21 }
        };
        
        // Group students by both Name and Age using an anonymous type as the key
        var groupedResult = studentList.GroupBy(student => new { student.Name, student.Age });
        
        foreach (var group in groupedResult)
        {
            Console.WriteLine($"Group Key: Name = {group.Key.Name}, Age = {group.Key.Age}");
            
            foreach (var student in group)
            {
                Console.WriteLine($"Student Name: {student.Name}, Age: {student.Age}");
            }
        }
    }
}

Bu örnekte, öğrenciler anonim tip bir anahtar kullanarak isim ve yaşı itibarıyla gruplandırılmıştır. Bu, isim ve yaşın her benzersiz kombinasyonunun ayrı bir grup olarak temsil edildiği gruplar oluşturur ve karmaşık gruplama senaryoları için GroupBy'ın esnekliğini gösterir.

Ekstra GroupBy Bilgisi

Gelişmiş GroupBy Kullanımı

GroupBy, birden fazla anahtar değerlere göre gruplama yapmanız gerektiğinde veya gruplandırılmış veri üzerinde sayma, filtreleme veya sıralama gibi ek işlemler yapmak istediğinizde daha da güçlü hale gelir. Bunu, GroupBy'ı diğer LINQ metodlarıyla birleştirerek veya birden fazla özellik ile gruplamak için anonim tipleri kullanarak elde edebilirsiniz.

GroupBy'da Ertelenmiş Yürütme

GroupBy'ın, belirli bir anahtar tarafından yinelendiğinde öğeleri işleyen ertelenmiş yürütme (deferred execution) kullandığını not etmek önemlidir. Bu, GroupBy metodu çağrıldığında gruplama işleminin hemen yapılmadığı anlamına gelir. Bunun yerine, yürütme ertelenir ve gruplandırılan veriler bir foreach döngüsünde yinelenene kadar bekletilir. Bu davranış, verilerin nihayet işlenmeden önce, daha fazla sorgu optimizasyonu ve değişikliklere olanak tanır.

IronPDF'i C# Projelerine Tanıtmak

C# GroupBy (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF web sayfası

IronPDF, geliştiricilerin .NET uygulamaları içinde PDF belgeleri oluşturmasına, manipüle etmesine ve dönüştürmesine olanak tanıyan kapsamlı bir C# kütüphanesidir. Bu güçlü araç, HTML'den PDF oluşturma'dan mevcut PDF dosyalarını düzenlemeye ve çok daha fazlasına kadar geniş bir işlevsellik yelpazesi sunar. IronPDF, PDF özelliklerinin uygulamalarınıza entegrasyonunu kolaylaştırır ve proje gereksinimleriniz için PDF manipülasyonunu değerli kılar.

IronPDF'in ana özelliği, stillerin ve düzenlerin korunduğundan emin olan HTML'den PDF'ye dönüşüm'dür. Web içeriğinden PDF'ler oluşturur ve raporlar, faturalar ve dökümantasyon için mükemmeldir. HTML dosyaları, URL'ler ve HTML dizgileri kesintisiz olarak PDF'ye dönüştürülebilir.

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

Gruplandırılmış Verilerden PDF Raporları Üretme

Öğrencileri yaş anahtar değeriyle gruplama önceki örneklerimizi genişletelim. Öğrencileri grupladıktan sonra, bu grupların yanı sınıfta öğrencilerin adlarını da listeleyen bir PDF raporu oluşturmak için IronPDF'i kullanacağız.

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class Program
{
    public static void Main()
    {
        // Initialize IronPDF license if applicable
        IronPdf.License.LicenseKey = "License";
        
        List<Student> studentList = new List<Student>
        {
            new Student { Name = "Alice", Age = 20 },
            new Student { Name = "Bob", Age = 20 },
            new Student { Name = "Charlie", Age = 21 },
            new Student { Name = "David", Age = 21 }
        };
        
        // Group students by their age
        var groupedResult = studentList.GroupBy(student => student.Age);
        
        // Create HTML content for the PDF report
        var htmlContent = "<h1>Student Report</h1>";
        
        foreach (var group in groupedResult)
        {
            htmlContent += $"<h2>Age Group: {group.Key}</h2><ul>";
            
            foreach (var student in group)
            {
                htmlContent += $"<li>{student.Name}</li>";
            }
            
            htmlContent += "</ul>";
        }
        
        // Initialize IronPDF renderer and generate PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        
        // Specify path to save the PDF file
        var outputPath = "StudentReport.pdf";
        pdf.SaveAs(outputPath);
        
        Console.WriteLine($"PDF report generated at {outputPath}");
    }
}

Bu örnekte, öğrencileri önce GroupBy metodu kullanarak yaşlarına göre gruplandırıyoruz. Ardından, bu gruplandırılmış verileri bir rapora biçimlendiren bir HTML dizesi oluşturuyoruz, burada her yaş grubu için başlıklar ve her grup altındaki öğrenci adlarının listeleri bulunur. Daha sonra bu HTML dizesini PDF belgesine dönüştürmek için IronPDF'in ChromePdfRenderer sınıfı kullanılır. Sonuçta ortaya çıkan PDF, yaşlarına göre gruplandırılmış öğrencilerin düzenli bir şekilde biçimlendirilmiş raporunu sağlar.

Çıktı

Önceki kod örneğinden elde edilen çıktı PDF'si burada:

C# GroupBy (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Önceki kod örneğinden çıktı alınmış PDF

Sonuç

C# dilinde GroupBy metodu, belirtilen anahtarlara göre verileri gruplamak için çok yönlü ve güçlü bir araçtır. Lambda ifadeleriyle metod sözdizimini veya daha açıklayıcı olan sorgu sözdizimini tercih edin, GroupBy, karmaşık veri yapılarını yönetilebilir ve okunabilir bir şekilde organize etmenizi sağlar. GroupBy ve diğer LINQ yöntemlerinde ustalaşarak, C# uygulamalarınızdaki veri manipülasyonunu ve analizini büyük ölçüde artırabilirsiniz.

IronPDF, satın almadan önce özelliklerini keşfetmek isteyenler için bir ücretsiz deneme sunar. Projelerine entegre etmeye hazır olanlar için lisanslama $999'den başlar ve C# uygulamalarında profesyonel düzeyde PDF işleme ve oluşturma için değerli bir yatırım yapar.

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