Automapper转换为Expandoobject-具有语句主体的Lambda表达式无法转换为表达式树

时间:2019-06-03 09:25:48

标签: c# automapper expandoobject

我希望将以下字典转换为expandoobject:

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

我的CustomAttribute类具有以下属性:

int AttributeId
string AttributeValue
int tId

我希望expandoobject仅包含AttributeId和AttributeValue。即ExpandoObject的Value部分不应包含整个'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));

我无法强迫进入expando对象的最后一步。我希望这可能有效:

 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;
            });

但是我收到一条错误消息:“带有语句主体的lambda表达式无法转换为表达式树”。

任何帮助将不胜感激!

0 个答案:

没有答案