如何匿名类型的实例转换为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

回到顶部