LambdaExpressions - PullRequest
       4

LambdaExpressions

1 голос
/ 24 января 2012

Мне нужно написать LambdaExpression, которое приведено ниже:

(a) => a.o.MovieType

, где определение a:

public class A<T, U> : EntityObject
    where T : EntityObject
    where U : EntityObject
{
    public T o { get; private set; }
    public U p { get; private set; }

    public static Expression<Func<T, U, A<T, U>>> TempProjectedExpression
    {
        get
        {
            return (o, p) => new A<T, U>
            {
                o = o,
                p = p
            };
        }
    }
}

Я написал следующее lambdaExpression для достижения моей цели, т. Е. (a) => aoMovieType

me = Expression.Property(pe1, _ResultantType.GetProperty("o").PropertyType.GetProperty(aPropertyName[0]));

Я получил ошибку: параметр MovieType не привязан в указанном выражении Linq to Entities.

Я изменил его после того, как понял, что проблемакажется слишком сложным, чем это должно быть.

1 Ответ

0 голосов
/ 27 января 2012

Я получил ответ. Я понял, что ошибка появляется из-за неправильного построения дерева выражений. (a) => a.o.MovieType следует понимать как два выражения в одном лямбда-выражении.

Следовательно, программно решение должно быть примерно таким:

(a) => (a.o) => a.o.MovieType

Expression<Func<A,B>> Exp1 = sample => sample.o;

т.е.

Expression<Func<Expression<Func<A,B>>,int>> Exp = sample => Exp1.Invoke(p.MovieType,p);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...