Data una semplice struttura di classe genitore/figlio. Voglio usare linqkit per applicare un'espressione lambda child sul genitore. Voglio anche che l'espressione Lambda sia fornita da un metodo di utilità.LinqKit System.InvalidCastException Durante il richiamo dell'espressione fornita dal metodo sulla proprietà membro
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
public string Value { get; set; }
public static Expression<Func<Bar, bool>> GetLambdaX()
{
return c => c.Value == "A";
}
}
...
Expression<Func<Foo, bool>> lx = c => Bar.GetLambdaX().Invoke(c.Bar);
Console.WriteLine(lx.Expand());
Il codice di cui sopra tiri
System.InvalidCastException: Unable to cast object of type
'System.Linq.Expressions.MethodCallExpression' to type
'System.Linq.Expressions.LambdaExpression'.
at LinqKit.ExpressionExpander.VisitMethodCall(MethodCallExpression m)
at LinqKit.ExpressionVisitor.Visit(Expression exp)
at LinqKit.ExpressionVisitor.VisitLambda(LambdaExpression lambda)
at LinqKit.ExpressionVisitor.Visit(Expression exp)
at LinqKit.Extensions.Expand<TDelegate>(Expression`1 expr)
Stavo per aiutare ma non riesco a compilare il codice. La linea lx non funziona. – Nix
Compila per me, la linea lx dovrebbe essere ad esempio un metodo util – user293499