Я хочу преобразовать следующий словарь в объект расширения:
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;
});
Но я получаю сообщение об ошибке, говорящее «Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений».
Любая помощь будет с благодарностьюполучено!