Aufzählungen in Vorlagen – Leitfaden zu Datenmethoden
PDF4meDie Dokumentengenerierungs-Engine von bietet leistungsstarke Enumerationsmethoden zur Bearbeitung von Datensammlungen innerhalb von Vorlagen. Diese Methoden ähneln denen von C# IEnumerableSie bieten umfassende Kontrolle über Datenoperationen wie Sortieren, Filtern, Aggregieren und Transformieren.
Verfügbare Aufzählungsmethoden
Die folgenden Methoden können auf Sammlungen innerhalb Ihrer Vorlagen angewendet werden, um Daten dynamisch zu verarbeiten und zu bearbeiten:
Filter- und Validierungsmethoden
All(Predicate) - Prüft, ob alle Elemente eine Bedingung erfüllen
[employees.All(p => p.Age < 50)]
Any() - Ermittelt, ob eine Sammlung Elemente enthält
employees.Any()
Any(Predicate) - Ermittelt, ob ein Element eine Bedingung erfüllt.
employees.Any(p => p.Name == "Mary Doe")
Contains(Object) - Ermittelt, ob eine Sammlung ein bestimmtes Element enthält
employees.Contains(otherPersons.First())
Aggregationsmethoden
Average(Selector) Berechnet den Durchschnitt einer numerischen Sammlung
employees.Average(p => p.Age)
Count() Gibt die Anzahl der Elemente in einer Sammlung zurück
employees.Count()
Count(Predicate) Gibt die Anzahl der Elemente zurück, die eine Bedingung erfüllen.
employees.Count(p => p.Age > 30)
Max(ComparableSelector) Gibt den Maximalwert einer Sammlung zurück.
employees.Max(p => p.Age)
Min(ComparableSelector) Gibt den Minimalwert einer Sammlung zurück.
employees.Min(p => p.Age)
Sum(Selector) Berechnet die Summe der numerischen Werte in einer Sammlung
employees.Sum(p => p.Children.Count())
Selektions- und Projektionsmethoden
First() Gibt das erste Element einer Sammlung zurück
employees.First()
First(Predicate) Gibt das erste Element zurück, das eine Bedingung erfüllt.
employees.First(p => p.Age > 30)
FirstOrDefault() Gibt das erste Element zurück oder einen Standardwert, falls die Liste leer ist.
employees.FirstOrDefault()
FirstOrDefault(Predicate) Gibt das erste Element zurück, das eine Bedingung erfüllt, oder den Standardwert.
employees.FirstOrDefault(p => p.Age > 30)
Last() Gibt das letzte Element einer Sammlung zurück
employees.Last()
Last(Predicate) Gibt das letzte Element zurück, das eine Bedingung erfüllt.
employees.Last(p => p.Age > 100)
LastOrDefault() Gibt das letzte Element zurück oder einen Standardwert, falls die Liste leer ist.
employees.LastOrDefault()
LastOrDefault(Predicate) Gibt das letzte Element zurück, das eine Bedingung erfüllt, oder den Standardwert.
employees.LastOrDefault(p => p.Age > 100)
Single() Gibt das einzige Element einer Sammlung zurück
employees.Single()
Single(Predicate) Gibt das einzige Element zurück, das eine Bedingung erfüllt.
employees.Single(p => p.Name == "John Smith")
SingleOrDefault() Gibt das einzige Element zurück oder einen Standardwert, falls die Funktion leer ist.
employees.SingleOrDefault()
SingleOrDefault(Predicate) Gibt das einzige Element zurück, das eine Bedingung erfüllt, oder den Standardwert.
employees.SingleOrDefault(p => p.Name == "Mary Doe")
Bestellmethoden
OrderBy(ComparableSelector) - Sortiert die Elemente in aufsteigender Reihenfolge
employees.OrderBy(p => p.Age)
Kann mit weiteren Bestellungen verkettet werden:
employees.OrderBy(p => p.Age).ThenByDescending(p => p.Name)
OrderByDescending(ComparableSelector) - Sortiert Elemente in absteigender Reihenfolge
employees.OrderByDescending(p => p.Age)
Kann mit weiteren Bestellungen verkettet werden:
employees.OrderByDescending(p => p.Age).ThenByDescending(p => p.Name)
Sammelvorgänge
Concat(IEnumerable) - Verkettet zwei Sammlungen
employees.Concat(otherPersons)
Distinct() - Gibt unterschiedliche Elemente aus einer Sammlung zurück
employees.Distinct()
Union(IEnumerable) - Erzeugt die Vereinigungsmenge zweier Sammlungen
employees.Union(otherPersons)
Where(Predicate) - Filtert Elemente basierend auf einer Bedingung
employees.Where(p => p.Age > 18)
Set Operationen
Skip(int) - Überspringt eine bestimmte Anzahl von Elementen
employees.Skip(10)
SkipWhile(Predicate) - Überspringt Elemente, solange eine Bedingung erfüllt ist
employees.SkipWhile(p => p.Age < 35)
Take(int) - Gibt eine bestimmte Anzahl von Elementen zurück
employees.Take(5)
TakeWhile(Predicate) Gibt Elemente zurück, solange eine Bedingung erfüllt ist
employees.TakeWhile(p => p.Age < 50)
Transformationsmethoden
Select(Selector) - Projiziert jedes Element in eine neue Form
employees.Select(p => p.Name)
SelectMany(EnumerationSelector) - Projekte und glätten Sammlungen
employees.SelectMany(p => p.Children)
GroupBy(Selector) - Gruppiert Elemente anhand eines bestimmten Schlüssels
employees.GroupBy(p => p.Age)
Kann nach mehreren Eigenschaften gruppiert werden:
employees.GroupBy(p => new { Age = p.Age, Count = p.Children.Count() })
Praktische Beispiele
Beispiel 1: Filtern und Zählen
Vorlage:
Total employees over 30: <<[employees.Count(p => p.Age > 30)]>>
Average age: <<[employees.Average(p => p.Age)]>>
Beispiel 2: Bedingte Anzeige
Vorlage:
<<if [employees.Any(p => p.Age > 50)]>>
We have senior employees in the team.
<</if>>
Beispiel 3: Sortierte Listen
Vorlage:
<<foreach [emp in employees.OrderBy(p => p.Name)]>>
- <<[emp.Name]>> (Age: <<[emp.Age]>>)
<</foreach>>
Beispiel 4: Gruppierte Daten
Vorlage:
<<foreach [group in employees.GroupBy(p => p.Department)]>>
Department: <<[group.Key]>>
Employee Count: <<[group.Count()]>>
<</foreach>>
Methode Verkettung
Mehrere Aufzählungsmethoden können für komplexe Datenoperationen miteinander verkettet werden:
<<[employees
.Where(p => p.Age > 25)
.OrderBy(p => p.Name)
.Take(10)
.Select(p => p.Name)]>>
Dieser Ausdruck:
- Filtert Mitarbeiter über 25 Jahre
- Sortiert sie nach Namen
- Nimmt die ersten 10 Ergebnisse
- Wählt nur deren Namen aus
Bewährte Verfahren
- Prädikate effizient verwenden - Filtern Sie die Daten so früh wie möglich in der Kette
- Vermeiden Sie komplexe Ausdrücke. - Komplexe Logik in mehrere Schritte unterteilen
- Test mit Beispieldaten - Überprüfen Sie, ob die Aufzählungsmethoden mit Ihrer Datenstruktur funktionieren.
- Leere Sammlungen behandeln - Verwenden
Any()vor der Verarbeitung von Sammlungen zu prüfen - Leistung optimieren - Minimiere die Aufrufe von Aufzählungsmethoden in Schleifen
:::Tipp zur Leistungsoptimierung Bei der Arbeit mit großen Datensammlungen empfiehlt es sich, die Daten bereits an der Quelle und nicht in der Vorlage zu filtern und einzuschränken, um eine bessere Leistung zu erzielen.
:::