Как мне динамически создать лямбда-выражение - PullRequest
2 голосов
/ 02 сентября 2011

Как динамически создать дерево выражений, которое выглядит примерно так ...

    p => new { p.FAMILY, p.CACHE_FAMILY, p.CUSTOMER_CODE, p.CCC, p.OPERATION, p.EVAL_CODE, p.VDT_FLAG, p.TEST_PLATFORM, p.PCBA_VENDOR }

В настоящее время мой код может обрабатывать только одно выражение.

public static void MapKeys<TEntity>(EntityTypeConfiguration<TEntity> mapper, string tableName)
        where TEntity : class
    {
        Type type = typeof(TEntity);
        ParameterExpression arg = Expression.Parameter(type, "x");
        Expression expr = arg;


        string propertyName = string.Empty;
        List<string> indexKeys = GetIndexKeyList(tableName);

        foreach (string key in indexKeys)
        {
            PropertyInfo pi = type.GetProperty(key,
            BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
            expr = Expression.Property(expr, pi);


            LambdaExpression lambda = Expression.Lambda(expr, arg);

            Expression<Func<TEntity, string>> expression = (Expression<Func<TEntity, string>>)lambda;
            mapper.HasKey(expression);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...