将匿名类型转换为字典

4
我正在尝试创建一个将匿名类型转换为字典的函数。我查看了此链接中所接受的答案 thread。然而,我遇到了以下错误:

未先将 lambda 表达式强制转换为委托或表达式树类型,就不能将其用作动态调度操作的参数

这是我想要做的事情。

public Dictionary<string,string> convert(dynamic dtype)
{
 var props = content.GetType().GetProperties();
 var pairs = props.Select(x => x.Name + "=" + x.GetValue(a, null)).ToArray();  // <----Exception
 var result = string.Join("&", pairs);
 return result
} 

有什么建议可以帮我解决这个问题吗?我正在尝试做这件事。
       var student= new
        {
            // TODO: Make this figure out and return underlying device status.
            type = "Active",
        };



 var dict = convert(student);

将参数类型从 dynamic 更改为 object - haim770
1个回答

4
异常在此处:
 x.GetValue(a, null)

只需像这样将a更改为content:
var pairs = props.Select(x => x.Name + "=" + x.GetValue(content, null)).ToArray();

content 是您匿名对象的名称。

但是,您编写的解决方案不会返回字典。如果您想要字典,请执行以下操作:

public static Dictionary<string, string> convert(object content)
        {

            var props = content.GetType().GetProperties();
            var pairDictionary = props.ToDictionary(x => x.Name,x=>x.GetValue(content,null)?.ToString());
            return pairDictionary;
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接