I have some method:
public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
// foo
}
and I have variable:
Expression<Func<TModel, IList<TItem>>> expression;
How I can pass my variable to Foo
?
I have some method:
public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
// foo
}
and I have variable:
Expression<Func<TModel, IList<TItem>>> expression;
How I can pass my variable to Foo
?
You have to convert your expression variable:
var exp = Expression.Lambda<Func<TModel, IEnumerable>>(expression.Body, expression.Parameters);
Foo(exp);
Use this:
public Expression<Func<TModel, IEnumerable>> ConvertExpression<TModel, TItem>(Expression<Func<TModel, IList<TItem>>> expression)
{
return (Expression<Func<TModel, IEnumerable>>)Expression
.Lambda(Expression.Convert(expression.Body, typeof(IEnumerable)), expression.Parameters);
}