Ş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:
- 25 yaş üstü çalışanları filtreler.
- İsimlerine göre sıralar.
- İlk 10 sonucu alır.
- Sadece isimlerini seçer.
En İyi Uygulamalar
- Yüklemleri verimli bir şekilde kullanın. - Veri zincirinde mümkün olan en erken aşamada verileri filtreleyin.
- Karmaşık ifadelerden kaçının. - Karmaşık mantığı birden fazla adıma ayırın.
- Örnek verilerle test edin - Numaralandırma yöntemlerinin veri yapınızla uyumlu çalıştığını doğrulayın.
- Boş koleksiyonları ele alın - Kullanmak
Any()Tahsilat işlemlerine başlamadan önce kontrol etmek - 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.
:::