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

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

Sıralama, herhangi bir programlama dilindeki temel işlemlerden biridir ve C# OrderBy yöntemi, koleksiyon içindeki öğeleri düzenlemek için güçlü bir araçtır. Array, liste veya diğer enumerateable yapılarla çalışırken, OrderBy'ı kullanmayı anlamak, kodunuzun okunabilirliğini ve işlevselliğini büyük ölçüde artırabilir.

Bu makalenin ilerleyen bölümlerinde Iron Software'in IronPDF kütüphanesini tanıtacak ve biçimlendirilmiş ve sıralanmış PDF'ler üretmek için LINQ OrderBy yöntemini ve IronPDF'i nasıl kullanabileceğimizi ele alacağız.

LINQ OrderBy Yöntemi Nedir?

C# içindeki LINQ (Dil Tümleşik Sorgu) kütüphanesinin bir parçası olan OrderBy yöntemi, öğeleri artan sırayla sıralamak için özel olarak tasarlanmıştır; yani verileri sıralamak için varsayılan yol olduğundan, artan anahtar kelimesine ihtiyaç yoktur.

LINQ OrderBy Yöntemi Nasıl Kullanılır

Verileri Artan Sırayla Sıralama

C# dilinde bu yöntemi uygulamanın iki yolu vardır: yöntem sözdizimi veya sorgu sözdizimi aracılığıyla. Yöntem sözdizimini kullanacağız çünkü bu daha basit:

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 kaynak koleksiyondur ve OrderByProperty, öğeleri sıralamak istediğiniz özellik veya ifadedir. OrderBy içindeki lambda ifadesi sıralama kriterini belirtir.

Verileri Azalan Sırayla Sıralama

Azalan sırada sıralamak için, metod tabanlı söz dizimini kullanarak OrderByDescending yöntemini 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

Birden Çok Kritere Göre Veri Sıralama

Gerçek dünya senaryolarında, bir koleksiyonu genellikle birden çok kritere dayalı olarak sıralamanız gerekir. Bu, birden çok ThenBy veya ThenByDescending çağrısını zincirleyerek sağlanabilir:

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 ilk önce artan sırayla OrderByProperty1 ile sıralanır. Ardından, aynı OrderByProperty1 değerine sahip öğeler için, OrderByProperty2 ile azalan sırayla sıralanır.

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

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

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, IComparer<t> arayüzünü uygulayan bir sınıftır ve öğeleri karşılaştırmak için özel bir mantık sağlar.

Pratik Örnek: Nesneleri Sıralama

Tam Sayı 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, bir tamsayı listesi, OrderBy kullanılarak artan sırayla sıralanır.

Bir Dizi Dizesini 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 dizesini alfabetik olarak artan sırayla sıralamayı gösterir.

Özel Nesneler 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 nesnelerinden oluşan bir liste, Age özelliğine göre artan sırayla sıralanır.

Konsolda görünen çıktı aşağıdaki gibidir:

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

Dize Karşılaştırmalarıyla Başa Çıkma

Dize özellikleriyle çalışırken, büyük/küçük harfe duyarsız sıralama sağlamak isteyebilirsiniz:

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, LastName özelliğine dayalı olarak büyük/küçük harf duyarsız bir sıralama yapmak için StringComparer.OrdinalIgnoreCase kullanır.

Performans Dikkat Edilecek Hususlar

LINQ, koleksiyonları sıralamak için özlü bir yol sağlarken, özellikle büyük veri setleri için performans etkilerini dikkate almak önemlidir. Performans açısından kritik senaryolarda, List<t>.Sort yöntemi kullanarak yerinde sıralama gibi alternatifleri keşfedebilirsiniz.

IronPDF Tanıtımı

IronPDF yeteneklerini C# PDF kütüphanesi içinde keşfedin, bu da PDF belgelerini okumaya ve üretmeye yardımcı olur. Biçimlendirilmiş belgeleri stil bilgileri ile kolayca PDF'ye dönüştürebilir. IronPDF, HTML dizelerinden PDF üretebilir veya URL'den HTML'yi indirip PDF'ler üretebilir.

HTML'yi PDF'ye dönüştürmede IronPDF parlıyor, tüm düzenleri ve stilleri koruyarak. Çeşitli web içeriğinden, raporlar, faturalar ve belgeler gibi PDF'ler üretebilir. Araç, PDF dosyaları oluşturmak için HTML dosyaları, URL'ler ve HTML dizeleri ile ç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

IronPDF, NuGet paket yöneticisi konsolu veya Visual Studio paket yöneticisi kullanılarak kurulabilir.

Install-Package IronPdf

IronPDF'i NuGet Paket Yöneticisi kullanarak, arama çubuğuna 'IronPDF' yazarak yükleyebilirsiniz.

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

IronPDF Kullanarak PDF Oluşturma

Aşağıda, bir HTML dizesi ve IronPDF üreteci kullanarak PDF raporu oluşturma kodu bulunmaktadı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 biçimlendirmelerle birlikte artan sırayla sıralanmış sortedPeople'den bir HTML dize üretmekteyiz. Ardından, IronPDF kullanarak bir PDF belgesi üretiyoruz. HTML dizgesini PDF belgesine dönüştürmek için RenderHtmlAsPdf yöntemini kullanıyoruz.

Çıktı

PDF'de mevcut olan çıktı aşağıdaki gibidir:

C# Orderby (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Önceki koddan elde edilen PDF çıktısı

Lisanslama (Ücretsiz Deneme Mevcuttur)

Deneme anahtarı IronPDF Deneme Lisansı üzerinden 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# dilindeki OrderBy yöntemi, çeşitli kriterler baz alınarak koleksiyonları sıralamak için çok yönlü bir araçtır. Artan veya azalan sırayla, tekli veya çoklu kriterlere göre sıralama yapma veya özel karşılaştırıcılar kullanılması gereken durumlar olsun, OrderBy'ı ustalıkla kullanmak, kodunuzun netliğini ve verimliliğini önemli ölçüde artırabilir.

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

Sıkça Sorulan Sorular

C# OrderBy yöntemi nasıl çalışır?

LINQ kütüphanesinin bir parçası olan C# OrderBy yöntemi, bir koleksiyonun elemanlarını artan sırada sıralar. Hem yöntem hem de sorgu sözdizimi ile kullanılabilir ve tamsayılar, dizeler ve özel nesneler gibi çeşitli türleri işlemek için yeterince esnektir.

C# kullanarak verileri azalan sırada nasıl sıralayabilirim?

C#'de verileri 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ı için OrderBy'in tamamlayıcısıdır.

C#'de birden fazla alanla sıralama yapmak mümkün mü?

Evet, C#'de OrderBy ile birlikte ThenBy veya ThenByDescending kullanarak birden fazla alanla sıralama yapabilirsiniz. Bu, geliştiricilerin çeşitli özelliklere dayalı koleksiyonları sıralamasına olanak tanıyan karmaşık sıralama kriterleri sağlar.

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

C# dilinde özel bir karşılaştırıcı, sıralama sırasında elemanları karşılaştırmak için özel bir mantık sağlayan IComparer arayüzünün bir uygulamasıdır. Bu, karmaşık nesneleri sıralamak veya varsayılan sıralama davranışının belirli gereksinimleri karşılamadığı durumlarda faydalıdır.

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

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

C# projesine IronPDF nasıl yüklenir?

IronPDF, NuGet paket yöneticisi kullanılarak bir C# projesine yüklenebilir. Konsolda dotnet add package IronPdf komutunu çalıştırabilir veya Visual Studio'da paket yöneticisini kullanarak projeye ekleyebilirsiniz.

IronPDF, C# OrderBy ile PDF oluşturma işlevselliği nasıl entegre edilir?

IronPDF, sıralanmış ve biçimlendirilmiş PDF raporları oluşturmak için C# OrderBy ile entegre edilebilir. OrderBy kullanarak veri koleksiyonlarını sıralayarak, PDF çıktısının sıralama kriterlerinize göre düzenlenmesini sağlayabilirsiniz.

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. Orijinal web sayfasının düzen ve stillerini korur ve böylece web sayfalarını arşivlemek veya yazdırılabilir versiyonlar oluşturmak için uygundur.

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

Daha Fazla Oku

Iron Destek Ekibi

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