Думаю, это ужасная коллекция.
См. Пример MSDN .Я бы предпочел этот:
var headers = new System.Net.WebHeaderCollection();
headers.Add("xxx", "yyy");
headers.Add("zzz", "fff");
headers.Add("xxx", "ttt");
for(int i = 0; i < headers.Count; ++i)
{
string header = headers.GetKey(i);
foreach(string value in headers.GetValues(i))
{
Console.WriteLine("{0}: {1}", header, value);
}
}
К сожалению, нет способа получить значения с сохранением порядка между другими заголовками.
Стиль PS Linq (в LINQPad )
var items = Enumerable
.Range(0, headers.Count)
.SelectMany(i => headers.GetValues(i)
.Select(v => Tuple.Create(headers.GetKey(i), v))
);
items.Dump();