我正在尝试创建一个将匿名类型转换为字典的函数。 我正在查看此链接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);
答案 0 :(得分:1)
例外在这里:
x.GetValue(a, null)
只需将a
更改为content
即可:
var pairs = props.Select(x => x.Name + "=" + x.GetValue(content, null)).ToArray();
内容 是您的匿名对象的名称。
但是您编写的此解决方案不返回dictionary。 如果您想使用字典:
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;
}