C#学习教程:如何将匿名类型的实例转换为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())); 

另一个(次要)变体,使用静态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())); 

只是你想要的:

 Dictionary dict = foo.GetType() .GetProperties() .ToDictionary(pi => pi.Name, pi => pi.GetValue(foo, null)); NameValueCollection nvc = new NameValueCollection(); foreach (KeyValuePair item in dict) { nvc.Add(item.Key, item.Value.ToString()); } 

我喜欢Yurity给出的一个小调整的答案来检查空值。

上述就是C#学习教程:如何将匿名类型的实例转换为NameValueCollection分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 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())); 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959873.html

发表评论

邮箱地址不会被公开。 必填项已用*标注