如何匿名类型的实例转换为NameValueCollection中
假设我有一个匿名的类的实例如何匿名类型的实例转换为NameValueCollection中
var foo = new { A = 1, B = 2};
是否有一个快速的方法来产生的NameValueCollection?我想达到与下面的代码相同的结果,而不提前知道匿名类型的属性。
NameValueCollection formFields = new NameValueCollection(); formFields["A"] = 1;
formFields["B"] = 2;
回答:
var foo = new { A = 1, B = 2 }; NameValueCollection formFields = new NameValueCollection();
foo.GetType().GetProperties()
.ToList()
.ForEach(pi => formFields.Add(pi.Name, pi.GetValue(foo, null).ToString()));
回答:
只是你想要什么:
Dictionary<string, object> dict = foo.GetType()
.GetProperties()
.ToDictionary(pi => pi.Name, pi => pi.GetValue(foo, null));
NameValueCollection nvc = new NameValueCollection();
foreach (KeyValuePair<string, object> item in dict)
{
nvc.Add(item.Key, item.Value.ToString());
}
回答:
另一个(未成年人)的变化,采用静态方法Array.ForEach
通过性能环......
var foo = new { A = 1, B = 2 }; var formFields = new NameValueCollection();
Array.ForEach(foo.GetType().GetProperties(),
pi => formFields.Add(pi.Name, pi.GetValue(foo, null).ToString()));
回答:
我就像Yurity给出的一个小调整来检查空值的答案。
var foo = new { A = 1, B = 2 }; NameValueCollection formFields = new NameValueCollection();
foo.GetType().GetProperties()
.ToList()
.ForEach(pi => formFields.Add(pi.Name, (pi.GetValue(foo, null) ?? "").ToString()));
以上是 如何匿名类型的实例转换为NameValueCollection中 的全部内容, 来源链接: utcz.com/qa/262780.html