Automapper преобразовать в Expandoobject - лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений - PullRequest
0 голосов
/ 03 июня 2019

Я хочу преобразовать следующий словарь в объект расширения:

var dicToConvert = new dictionary<int, CustomAttribute>()

Мой класс CustomAttribute имеет следующие свойства:

int AttributeId
string AttributeValue
int tId

Я бы хотел, чтобы объект расширения содержал толькоAttributeId и AttributeValue.Т.е. часть значения ExpandoObject не должна содержать целых 'CustomAttibute', только 'AttributeValue' из него.

Из моего первоначального словаря, следующее работает для преобразования одной KeyValuePair в KeyValuePair:

 CreateMap<KeyValuePair<int, CustomAttribute>, KeyValuePair<string, object>>()
            .ConvertUsing(source => new KeyValuePair<string, object>(source.Key.ToString(), source.Value.AttributeValue));

Следующее также работает для преобразования словаря в словарь

 CreateMap<Dictionary<int, CustomAttibute>, Dictionary<string, object>>()
            .ConvertUsing(source => source.ToDictionary(e => e.Key.ToString(), e => (object) e.Value.AttributeValue));

Я не могу сделать последний шаг в принуждении к расширению объекта.Я надеялся, что это может сработать:

 CreateMap<Dictionary<int, CustomAttribute>, ExpandoObject>()
            .ConvertUsing(source =>
            {
                var returnValue = new ExpandoObject();
                foreach (var item in source)
                {
                    returnValue.Add(item.Key.ToString(), item.Value.AttributeValue);
                }

                return returnValue;
            });

Но я получаю сообщение об ошибке, говорящее «Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений».

Любая помощь будет с благодарностьюполучено!

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