Ana içeriğe geç

Şablonlarda Numaralandırma - Veri Yöntemleri Kılavuzu

PDF4meBelge oluşturma motoru, şablonlar içindeki veri koleksiyonlarını işlemek için güçlü numaralandırma yöntemleri sunar. Bu yöntemler, aşağıdakilere benzer şekilde çalışır: C# IEnumerableVeri işlemleri üzerinde kapsamlı kontrol imkanı sunar; sıralama, filtreleme, toplama ve dönüştürme gibi işlemler de bu kapsamdadır.


Mevcut Numaralandırma Yöntemleri

Şablonlarınızdaki koleksiyonlara aşağıdaki yöntemler uygulanarak veriler dinamik olarak işlenebilir ve manipüle edilebilir:

Filtreleme ve Doğrulama Yöntemleri

All(Predicate) - Tüm unsurların bir koşulu sağlayıp sağlamadığını belirler.

[employees.All(p => p.Age < 50)]

Any() - Bir koleksiyonun herhangi bir öğe içerip içermediğini belirler.

employees.Any()

Any(Predicate) - Herhangi bir elemanın bir koşulu sağlayıp sağlamadığını belirler.

employees.Any(p => p.Name == "Mary Doe")

Contains(Object) - Bir koleksiyonun belirli bir öğeyi içerip içermediğini belirler.

employees.Contains(otherPersons.First())

Toplama Yöntemleri

Average(Selector) - Sayısal bir kümenin ortalamasını hesaplar.

employees.Average(p => p.Age)

Count() - Bir koleksiyondaki eleman sayısını döndürür.

employees.Count()

Count(Predicate) - Belirtilen koşulu sağlayan elemanların sayısını döndürür.

employees.Count(p => p.Age > 30)

Max(ComparableSelector) - Bir koleksiyondaki en büyük değeri döndürür.

employees.Max(p => p.Age)

Min(ComparableSelector) - Bir koleksiyondaki en küçük değeri döndürür.

employees.Min(p => p.Age)

Sum(Selector) - Bir koleksiyondaki sayısal değerlerin toplamını hesaplar.

employees.Sum(p => p.Children.Count())

Seçim ve Projeksiyon Yöntemleri

First() - Bir koleksiyonun ilk öğesini döndürür.

employees.First()

First(Predicate) - Belirtilen koşulu sağlayan ilk öğeyi döndürür.

employees.First(p => p.Age > 30)

FirstOrDefault() - İlk öğeyi döndürür veya boşsa varsayılan bir değer döndürür.

employees.FirstOrDefault()

FirstOrDefault(Predicate) - Belirtilen koşulu sağlayan ilk öğeyi döndürür veya varsayılan değeri döndürür.

employees.FirstOrDefault(p => p.Age > 30)

Last() - Bir koleksiyonun son öğesini döndürür.

employees.Last()

Last(Predicate) - Belirtilen koşulu sağlayan son öğeyi döndürür.

employees.Last(p => p.Age > 100)

LastOrDefault() - Son öğeyi döndürür veya boşsa varsayılan bir değer döndürür.

employees.LastOrDefault()

LastOrDefault(Predicate) - Belirtilen koşulu sağlayan son öğeyi veya varsayılan değeri döndürür.

employees.LastOrDefault(p => p.Age > 100)

Single() - Bir koleksiyonun tek öğesini döndürür.

employees.Single()

Single(Predicate) - Belirtilen koşulu sağlayan tek öğeyi döndürür.

employees.Single(p => p.Name == "John Smith")

SingleOrDefault() - Yalnızca bir öğe döndürür veya boşsa varsayılan bir değer döndürür.

employees.SingleOrDefault()

SingleOrDefault(Predicate) - Belirtilen koşulu sağlayan tek öğeyi döndürür veya varsayılan değeri döndürür.

employees.SingleOrDefault(p => p.Name == "Mary Doe")

Sipariş Yöntemleri

OrderBy(ComparableSelector) - Öğeleri artan sırada sıralar

employees.OrderBy(p => p.Age)

Ek siparişlerle zincirleme olarak sipariş verilebilir:

employees.OrderBy(p => p.Age).ThenByDescending(p => p.Name)

OrderByDescending(ComparableSelector) - Öğeleri azalan sırada sıralar

employees.OrderByDescending(p => p.Age)

Ek siparişlerle zincirleme olarak sipariş verilebilir:

employees.OrderByDescending(p => p.Age).ThenByDescending(p => p.Name)

Tahsilat İşlemleri

Concat(IEnumerable) - İki koleksiyonu birleştirir

employees.Concat(otherPersons)

Distinct() - Bir koleksiyondan farklı öğeleri döndürür.

employees.Distinct()

Union(IEnumerable) - İki koleksiyonun küme birleşimini oluşturur.

employees.Union(otherPersons)

Where(Predicate) - Öğeleri bir koşula göre filtreler.

employees.Where(p => p.Age > 18)

Küme İşlemleri

Skip(int) - Belirtilen sayıda elemanı atlar

employees.Skip(10)

SkipWhile(Predicate) - Bir koşul doğru olduğu sürece öğeleri atlar.

employees.SkipWhile(p => p.Age < 35)

Take(int) - Belirtilen sayıda öğe döndürür

employees.Take(5)

TakeWhile(Predicate) - Bir koşul doğru olduğu sürece öğeleri döndürür.

employees.TakeWhile(p => p.Age < 50)

Dönüşüm Yöntemleri

Select(Selector) - Her bir elementi yeni bir forma dönüştürüyor.

employees.Select(p => p.Name)

SelectMany(EnumerationSelector) - Projeler ve koleksiyonları düzleştirir

employees.SelectMany(p => p.Children)

GroupBy(Selector) - Öğeleri belirtilen bir anahtara göre gruplandırır.

employees.GroupBy(p => p.Age)

Birden fazla özelliğe göre gruplandırma yapılabilir:

employees.GroupBy(p => new { Age = p.Age, Count = p.Children.Count() })

Pratik Örnekler

Örnek 1: Filtreleme ve Sayma

Şablon:

Total employees over 30: <<[employees.Count(p => p.Age > 30)]>>
Average age: <<[employees.Average(p => p.Age)]>>

Örnek 2: Koşullu Görüntüleme

Şablon:

<<if [employees.Any(p => p.Age > 50)]>>
We have senior employees in the team.
<</if>>

Örnek 3: Sıralı Listeler

Şablon:

<<foreach [emp in employees.OrderBy(p => p.Name)]>>
- <<[emp.Name]>> (Age: <<[emp.Age]>>)
<</foreach>>

Örnek 4: Gruplandırılmış Veriler

Şablon:

<<foreach [group in employees.GroupBy(p => p.Department)]>>
Department: <<[group.Key]>>
Employee Count: <<[group.Count()]>>
<</foreach>>

Yöntem Zincirleme

Karmaşık veri işlemleri için birden fazla numaralandırma yöntemi birbirine zincirlenebilir:

<<[employees
.Where(p => p.Age > 25)
.OrderBy(p => p.Name)
.Take(10)
.Select(p => p.Name)]>>

Bu ifade:

  1. 25 yaş üstü çalışanları filtreler.
  2. İsimlerine göre sıralar.
  3. İlk 10 sonucu alır.
  4. Sadece isimlerini seçer.

En İyi Uygulamalar

  1. Yüklemleri verimli bir şekilde kullanın. - Veri zincirinde mümkün olan en erken aşamada verileri filtreleyin.
  2. Karmaşık ifadelerden kaçının. - Karmaşık mantığı birden fazla adıma ayırın.
  3. Örnek verilerle test edin - Numaralandırma yöntemlerinin veri yapınızla uyumlu çalıştığını doğrulayın.
  4. Boş koleksiyonları ele alın - Kullanmak Any() Tahsilat işlemlerine başlamadan önce kontrol etmek
  5. Performansı optimize edin - Döngülerdeki numaralandırma yöntemi çağrılarını en aza indirin.

:::İpucu: Performans Hususları Büyük veri kümeleriyle çalışırken, daha iyi performans için verileri şablonda değil, kaynakta filtrelemeyi ve sınırlandırmayı düşünün.

:::