将匿名类型转换为字典

我正在尝试创建一个将匿名类型转换为字典的函数。 我正在查看此链接线程中已接受的答案。但是我收到错误


无法使用 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);


Smart猫小萌
浏览 141回答 1
1回答

缥缈止盈

例外在这里:&nbsp;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)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var props = content.GetType().GetProperties();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var pairDictionary = props.ToDictionary(x => x.Name,x=>x.GetValue(content,null)?.ToString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return pairDictionary;&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP