Domande frequenti sulle espressioni

In che modo è possibile migliorare le prestazioni delle espressioni quando contengono un numero elevato di nodi di pari livello?

Le espressioni con logica relativa agli elementi di pari livello come Node.Siblings.Any(SiblingNode.Properties.Boolean Prop) possono causare problemi di prestazioni nelle gerarchie in cui sono presenti molti elementi di pari livello. Questo si verifica perché ogni nodo contiene un set univoco di elementi di pari livello. Ad esempio, per un nodo del livello più alto con figli A, B, C, D ed E, per il nodo A sono presenti gli elementi di pari livello B, C, D, E, per il nodo B gli elementi di pari livello A, C, D, E, ecc.

Un modo migliore per costruire l'espressione è creare una proprietà a cui fare riferimento nel padre utilizzando i figli e quindi fare riferimento a tale proprietà nel nodo. Ad esempio, è possibile creare una proprietà denominata ChildrenBooleanSet con l'espressione Node.Children.Any(ChildNode.Properties.Boolean Prop), quindi fare riferimento a tale proprietà nel nodo Node.Parent.Properties.ChildrenBooleanSet.

Questo tipo di espressione offre prestazioni migliori perché il valore padre può essere memorizzato nella cache.

Caution:

Tenere presente che con l'espressione di esempio sopra, i figli includeranno il nodo stesso, mentre gli elementi di pari livello no. Se necessario, è possibile aggiungere ulteriore logica per filtrare il nodo stesso.