我有一个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/

10-10 20:32