diff --git a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicQueryable.cs b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicQueryable.cs index 0a89ab0e1a..2c9ea55590 100644 --- a/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicQueryable.cs +++ b/umbraco.MacroEngines.Juno/RazorDynamicNode/DynamicQueryable.cs @@ -1097,7 +1097,14 @@ namespace System.Linq.Dynamic { ParameterExpression[] parameters = new ParameterExpression[(expr as LambdaExpression).Parameters.Count]; (expr as LambdaExpression).Parameters.CopyTo(parameters, 0); - expr = Expression.Lambda>(Expression.Not(Expression.Invoke(expr, parameters)), parameters); + var invokedExpr = Expression.Invoke(expr, parameters); + var not = Expression.Not(Expression.TypeAs(invokedExpr, typeof(Nullable))); + expr = Expression.Lambda>( + Expression.Condition( + Expression.Property(not, "HasValue"), + Expression.Property(not, "Value"), + Expression.Constant(false, typeof(bool)) + ), parameters); } else { @@ -2416,7 +2423,7 @@ namespace System.Linq.Dynamic } else { - return (Expression.Lambda>(Expression.AndAlso(finalLeft, finalRight), parameters)); + return (Expression.Lambda>(Expression.AndAlso(finalLeft, finalRight), parameters)); } case ExpressionType.OrElse: if (leftIsLambda && rightIsLambda && sequenceEqual)