J'ai une grille avec (n) des colonnes générées dynamiquement. Une des exigences est qu'une ligne ne soit montrée dans la grille que si une valeur non nulle/non nulle existe dans l'une des colonnes affichées. J'utilise un XamGrid Infragistics, qui a l'option d'utiliser un filtre de ligne qui acceptera une expression comme critère de filtre. J'ai lié la clé de mes colonnes aux propriétés MyObject. J'essaie de générer une chaîne d'expressions en fonction des colonnes de ma grille qui sont affichées. Voici quelques pseudo-code qui montre une idée de ce que je suis en train d'accomplirComment puis-je combiner (n) des expressions en utilisant LINQ?
System.Linq.Expressions.Expression<Func<MyObject, bool>> expr = product =>
{
foreach (var p in MyGrid.Columns.Where(co => co.DataType == typeof (decimal?) && co.Visibility == Visibility.Visible))
{
Expression<Func<MyObject, bool>> exprInner = lrnc => ((decimal?) lrnc.GetPropValue(p.Key)) != 0.0m;
combined = System.Linq.Expressions.Expression.OrElse(combined.Body, exprInner.Body);
}
};
Comme ça? http://www.albahari.com/nutshell/predicatebuilder.aspx – hatchet
@hatchet Merci, ça m'a donné toutes les infos dont j'avais besoin. – TychoBrahe