«выберите» объекты во время выполнения включают свойство навигации - PullRequest
2 голосов
/ 13 апреля 2019

Существует код, выберите объект во время выполнения

Repository.GetAll().Select(Projection<Handbook, HandbookViewModel>())

public Expression<Func<T, D>> Projection<T, D>()
    {
        var baseParameter = Expression.Parameter(typeof(T), "base");
        var resultParameter = Expression.Parameter(typeof(D), "result");

        var bindings = typeof(D).GetProperties().Select(x => x.Name)
            .Select(name => new KeyValuePair<System.Reflection.MemberInfo, MemberExpression>(Expression.Property(resultParameter, name).Member, Expression.Property(baseParameter, name)))
            .Select(member => Expression.Bind(member.Key, member.Value));

        return Expression.Lambda<Func<T, D>>(Expression.MemberInit(Expression.New(typeof(D)), bindings), baseParameter);
    }

Возможно ли получить данные из свойства навигации с отношением один к одному, например base.CreatedUser.Name?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...