Altbilgi içeriğine atla
.NET YARDıM

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

Sıralama, herhangi bir programlama dilinde temel bir işlem olup, C# OrderBy metodu, koleksiyonlar içindeki öğeleri düzenlemek için güçlü bir araçtır. Dizilerle, listelerle veya diğer enumerable yapılarla çalışırken OrderBy'dan nasıl yararlanabileceğinizi anlamak, kodunuzun okunabilirliğini ve işlevselliğini büyük ölçüde artırabilir.

Bu makalede ileride, Iron Software'dan IronPDF kutuphanesini ve Linq OrderBy metodunu ve IronPDF'yi kullanarak biçimlendirilmiş ve sıralanmış PDF'ler nasıl üretileceğini tanıtacağız.

LINQ OrderBy Metodu Nedir?

C#'deki LINQ (Dil Entegre Sorgusu) kütüphanesinin bir parçası olan OrderBy metodu, öğeleri artan sırayla sıralamak için özel olarak tasarlanmıştır. veri sıralamanın varsayılan yolu olduğundan, bir artan anahtar kelimeye gerek yoktur.

LINQ OrderBy Metodu Nasıl Kullanılır

Verileri Artan Sırada Sıralama

C#'da bu metodu uygulamak için iki yol vardır: metod sözdizimi veya sorgu sözdizimi. Metod sözdizimini kullanacağız çünkü bu, düz bir ilerleyiş gösterir:

var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
Dim sortedCollection = collection.OrderBy(Function(item) item.OrderByProperty)
$vbLabelText   $csharpLabel

Burada, collection sıralamak istediğiniz IEnumerable kaynak koleksiyonudur ve OrderByProperty, öğeleri sıralamak için kullanmak istediğiniz özellik veya ifadedir. OrderBy içindeki lambda ifadesi sıralama kriterini belirtir.

Verileri Azalan Sırada Sıralamak

Azalan sırayla sıralamak için, yöntem bazlı sözdizimini kullanarak OrderByDescending metodunu kullanabilirsiniz:

var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
Dim sortedCollectionDesc = collection.OrderByDescending(Function(item) item.OrderByProperty)
$vbLabelText   $csharpLabel

Çok Kriterli Veri Sıralama

Gerçek dünya senaryolarında, çoğu zaman bir koleksiyonu birden fazla kritere göre sıralamanız gerekir. OrderBy, birden çok ThenBy veya ThenByDescending çağrısını zincirleyerek bunu sağlar:

var multiSortedCollection = collection
    .OrderBy(item => item.OrderByProperty1)
    .ThenByDescending(item => item.OrderByProperty2);
var multiSortedCollection = collection
    .OrderBy(item => item.OrderByProperty1)
    .ThenByDescending(item => item.OrderByProperty2);
Dim multiSortedCollection = collection.OrderBy(Function(item) item.OrderByProperty1).ThenByDescending(Function(item) item.OrderByProperty2)
$vbLabelText   $csharpLabel

Bu örnekte, koleksiyon ilkin OrderByProperty1 ile artan sırayla sıralanır. Ardından, aynı OrderByProperty1 değerine sahip olan öğeler, OrderByProperty2 ile azalan sıraya göre sıralanır.

Özel Karşılaştırıcılar

Daha karmaşık sıralama gereksinimleri için özel karşılaştırıcılar kullanabilirsiniz. OrderBy yöntemi, aşağıdaki örnekte gösterildiği gibi, bir IComparer<t> uygulamasını geçirmenize olanak tanır:

var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
Dim customSortedCollection = collection.OrderBy(Function(item) item.Property, New CustomComparer())
$vbLabelText   $csharpLabel

Burada, CustomComparer sınıfı, öğeleri karşılaştırmak için özel mantık sağlayan IComparer<t> arayüzünü uygulamaktadır.

Pratik Örnek: Nesneleri Sıralama

Bir Tamsayı Listesini Sıralama

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

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
        var sortedNumbers = numbers.OrderBy(num => num);
        Console.WriteLine("Sorted Numbers:");
        foreach (var number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
        var sortedNumbers = numbers.OrderBy(num => num);
        Console.WriteLine("Sorted Numbers:");
        foreach (var number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
Imports System
Imports System.Linq
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		Dim numbers As New List(Of Integer) From {5, 2, 8, 1, 7}
		Dim sortedNumbers = numbers.OrderBy(Function(num) num)
		Console.WriteLine("Sorted Numbers:")
		For Each number In sortedNumbers
			Console.WriteLine(number)
		Next number
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnekte, tam sayı listesini OrderBy kullanarak artan sırayla sıralıyoruz.

Bir Dizi Listesini Sıralama

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

class Program
{
    static void Main()
    {
        List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
        var sortedNames = names.OrderBy(name => name);
        Console.WriteLine("Sorted Names:");
        foreach (var name in sortedNames)
        {
            Console.WriteLine(name);
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
        var sortedNames = names.OrderBy(name => name);
        Console.WriteLine("Sorted Names:");
        foreach (var name in sortedNames)
        {
            Console.WriteLine(name);
        }
    }
}
Imports System
Imports System.Linq
Imports System.Collections.Generic

Friend Class Program
	Shared Sub Main()
		Dim names As New List(Of String) From {"Alice", "Charlie", "Bob", "David"}
		Dim sortedNames = names.OrderBy(Function(name) name)
		Console.WriteLine("Sorted Names:")
		For Each name In sortedNames
			Console.WriteLine(name)
		Next name
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek, bir dizi listesinin alfabetik olarak artan sırayla nasıl sıralandığını gösterir.

Özel Nesnelerin Bir Listesini Sıralama

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

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        Console.WriteLine("Sorted People by Age:");
        foreach (var person in sortedPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        Console.WriteLine("Sorted People by Age:");
        foreach (var person in sortedPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
        }
    }
}
Imports System
Imports System.Linq
Imports System.Collections.Generic

Friend Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim people As New List(Of Person) From {
			New Person With {
				.FirstName = "John",
				.LastName = "Doe",
				.Age = 30
			},
			New Person With {
				.FirstName = "Alice",
				.LastName = "Smith",
				.Age = 25
			},
			New Person With {
				.FirstName = "Bob",
				.LastName = "Johnson",
				.Age = 35
			}
		}
		Dim sortedPeople = people.OrderBy(Function(person) person.Age)
		Console.WriteLine("Sorted People by Age:")
		For Each person In sortedPeople
			Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}")
		Next person
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnekte, özel Person nesneleri listesi, Age özelliğine göre artan sırayla sıralanır.

Aşağıdaki çıktı konsolda gözükmektedir:

C# Orderby (Geliştiriciler için Nasıl Çalışır): Şekil 1 - Özel nesneleri sıralayan önceki kodun çıktısı

Dizi Karşılaştırmalarını Ele Alma

Dizi özellikleriyle ilgilenirken, büyük küçük harf duyarsız sıralama yapmayı düşünebilirsiniz:

var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
Dim sortedPeopleByName = people.OrderBy(Function(person) person.LastName, StringComparer.OrdinalIgnoreCase)
$vbLabelText   $csharpLabel

Bu örnek, StringComparer.OrdinalIgnoreCase kullanarak LastName özelliğine göre büyük/küçük harfe duyarsız bir sıralama yapar.

Performans Dikkat Edilecek Noktalar

LINQ, koleksiyonları sıralamak için kısa bir yol sağlarken, büyük veri kümeleri için performans etkilerini dikkate almak önemlidir. Performansın kritik olduğu senaryolar için, List<t>.Sort metodunu kullanarak yerinde sıralama gibi alternatifleri araştırabilirsiniz.

IronPDF'i Tanıtma

IronPDF özelliklerini keşfedin ve PDF belgelerini okuma ve oluşturma konusunda yardımcı olan Iron Software'den C# PDF kütüphanesi. Stil bilgisiyle biçimlendirilmiş belgeleri kolayca PDF'ye dönüştürebilir. IronPDF, HTML dizi olarak PDF oluşturabilir veya URL'den HTML indirip ardından PDF oluşturabilir.

IronPDF HTML'yi PDF'ye dönüştürme söz konusu olduğunda tüm düzenleri ve stilleri koruyarak öne çıkar. Çeşitli web içeriğinden PDF'ler oluşturabilir, örneğin raporlar, faturalar ve belgeler. HTML dosyaları, URL'ler ve HTML dizileri ile PDF dosyaları oluşturmak için çalışır.

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

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. 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")

		' 2. 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")

		' 3. 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

Kurulum

NuGet paket yöneticisi konsolunu veya Visual Studio paket yöneticisini kullanarak IronPDF yüklenebilir.

Install-Package IronPdf

Ayrıca NuGet Paket Yöneticisi kullanarak 'ironpdf' araması yaparak IronPDF yükleyebilirsiniz.

C# Orderby (Geliştiriciler için Nasıl Çalışır): Şekil 2 - IronPDF'in NuGet Paket Yöneticisi aracılığıyla kurulumu

IronPDF Kullanarak Bir PDF Oluşturmak

Bir HTML dizesi ve IronPDF oluşturucuyu kullanarak bir PDF raporu oluşturmak için kod aşağıdadır:

// See https://aka.ms/new-console-template for more information

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

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };

        // Sort people by age
        var sortedPeople = people.OrderBy(person => person.Age);

        string name = "Sam";
        var count = people.Count;

        // Generate an HTML string
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" + string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";

        // Create a new PDF document and save it
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}
// See https://aka.ms/new-console-template for more information

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

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };

        // Sort people by age
        var sortedPeople = people.OrderBy(person => person.Age);

        string name = "Sam";
        var count = people.Count;

        // Generate an HTML string
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" + string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";

        // Create a new PDF document and save it
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}
' See https://aka.ms/new-console-template for more information

Imports Microsoft.VisualBasic
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq

Friend Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim people As New List(Of Person) From {
			New Person With {
				.FirstName = "John",
				.LastName = "Doe",
				.Age = 30
			},
			New Person With {
				.FirstName = "Alice",
				.LastName = "Smith",
				.Age = 25
			},
			New Person With {
				.FirstName = "Bob",
				.LastName = "Johnson",
				.Age = 35
			}
		}

		' Sort people by age
		Dim sortedPeople = people.OrderBy(Function(person) person.Age)

		Dim name As String = "Sam"
		Dim count = people.Count

		' Generate an HTML string
		Dim content As String = $"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" & String.Join(vbLf, sortedPeople.Select(Function(person) $"{person.FirstName} {person.LastName}, Age: {person.Age}")) & "
</body>
</html>"

		' Create a new PDF document and save it
		Dim pdfDocument = New ChromePdfRenderer()
		pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Burada, raporlar için gerekli tüm formatlamalarla birlikte artan sıralamayla sortedPeople'dan bir HTML dizesi oluşturuyoruz. Daha sonra IronPDF kullanarak bir PDF belgesi oluşturuyoruz. HTML dizesini bir PDF belgesine dönüştürmek için RenderHtmlAsPdf metodunu kullanıyoruz.

Çıktı

Aşağıdaki çıktı PDF'de mevcuttur:

C# Orderby (Geliştiriciler için Nasıl Çalışır): Şekil 3 - Önceki koddan çıkan PDF

Lisanslama (Ücretsiz Deneme Mevcut)

Bir deneme anahtarı IronPDF Deneme Lisansı'ndan alınabilir. Bu anahtar appsettings.json dosyasına yerleştirilmelidir.

"IronPdf.LicenseKey": "your license key"

Deneme lisansı almak için e-posta adresinizi sağlayın.

Sonuç

C#'da OrderBy yöntemi, koleksiyonları çeşitli kriterlere göre sıralamak için çok yönlü bir araçtır. İster artan ister azalan sırayla sıralayın, tek bir kriterle veya birden fazla kriterle, ya da özel karşılaştırıcılar kullanarak sıralayın, OrderBy'ı ustalıkla kullanmak, kodunuzun açıklığını ve verimliliğini önemli ölçüde artırabilir.

IronPDF kütüphanesi ile PDF belgeleri oluşturmak ile birlikte, güzel biçimlendirilmiş ve sıralanmış bir koleksiyonun belge olarak üretilmesi için harika bir kombinasyondur.

Sıkça Sorulan Sorular

C#'ın OrderBy metodu nasıl çalışır?

LINQ kütüphanesinin bir parçası olan C# OrderBy metodu, bir koleksiyonun unsurlarını artan sırayla sıralar. Hem yöntem hem de sorgu sözdizimi ile kullanılabilir ve tamsayılar, dizeler ve özel nesneleri işleyebilecek kadar çok yönlüdür.

C#'ta veriyi azalan sırayla nasıl sıralayabilirim?

C#'ta veriyi azalan sırada sıralamak için OrderByDescending yöntemini kullanabilirsiniz. Bu, LINQ kütüphanesinin bir parçasıdır ve farklı sıralama ihtiyaçlarına yönelik OrderBy'ye iltifatta bulunur.

C#'ta birden fazla alana göre sıralamak mümkün müdür?

Evet, C#'ta OrderBy ile ThenBy veya ThenByDescending kullanarak birden fazla alana göre sıralama yapabilirsiniz. Bu, geliştiricilerin birden fazla özelliğe dayalı olarak koleksiyonları sıralamalarına olanak tanıyan karmaşık sıralama kriterlerine olanak tanır.

Özel bir karşılaştırıcı nedir ve C# sıralamasında nasıl kullanılır?

C#'ta özel bir karsilastirici, siralama sirasinda ogeleri karsilastirmak için özel mantik saglayan IComparer arabiriminin bir uygulamasidir. Bu, karmaşık nesneleri siralamak için veya varsayılan siralama davranisi belirli gereksinimlerle karsilasmadiginda kullanislidir.

IronPDF'yi C#'ta PDF oluşturmak için nasıl kullanabilirim?

IronPDF'yi C#'ta HTML dizelerinden, dosyalardan veya hatta web URL'lerinden PDF oluşturmak için kullanabilirsiniz. IronPDF, orijinal içeriğin düzenini ve stilini korurken, raporlar ve faturalar gibi profesyonel belgeler oluşturmak için idealdir.

C# projesinde IronPDF'yi kurmanın adımları nelerdir?

IronPDF, C# projesinde NuGet paket yöneticisi kullanılarak kurulabilir. Konsolda dotnet add package IronPdf komutunu çalıştırabilirsiniz veya Visual Studio'daki paket yöneticisini kullanarak projenize ekleyebilirsiniz.

IronPDF, C# OrderBy ile PDF oluşturmak için nasıl entegre olur?

IronPDF, sıralanmış ve biçimlendirilmiş PDF raporları oluşturmak için C# OrderBy ile entegre edilebilir. Verileri OrderBy kullanarak sıraladıktan sonra, çıktının sıralama kriterlerinize göre organize olmasını sağlar.

IronPDF, bir web sayfası URL'sini PDF'ye dönüştürebilir mi?

Evet, IronPDF bir URL'den web içeriğini PDF belgesine dönüştürebilir. Web sayfasının orijinal düzen ve stillerini korur ve web sayfalarını arşivlemek veya yazdırılabilir versiyonlar oluşturmak için uygundur.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara