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)
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)
Ç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)
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())
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
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
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
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:

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

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

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.




