我有一个NameValueCollection
,并且想要遍历这些值。目前,我正在这样做,但是似乎应该有一种更简洁的方法:
NameValueCollection nvc = new NameValueCollection();
nvc.Add("Test", "Val1");
nvc.Add("Test2", "Val1");
nvc.Add("Test2", "Val1");
nvc.Add("Test2", "Val2");
nvc.Add("Test3", "Val1");
nvc.Add("Test4", "Val4");
foreach (string s in nvc)
foreach (string v in nvc.GetValues(s))
Console.WriteLine("{0} {1}", s, v);
Console.ReadLine();
有没有?
最佳答案
您可以使用Linq展平集合,但它仍然是foreach
循环,但现在更加隐含。
var items = nvc.AllKeys.SelectMany(nvc.GetValues, (k, v) => new {key = k, value = v});
foreach (var item in items)
Console.WriteLine("{0} {1}", item.key, item.value);
第一行使用属性键和值将嵌套集合转换为匿名对象的(非嵌套)集合。它变得扁平了,因为它现在是映射键->值,而不是键->值的集合。示例数据:
前:
后:
关于c# - C#遍历NameValueCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5065928/