Можете ли вы использовать словарь <строка, строка> вместо NameValueCollection. Поскольку Dictionary реализует IEnumerable, вы можете использовать LINQ следующим образом:
resultGV.DataSource = from item in nvpDictionary
select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();
[РЕДАКТИРОВАТЬ] На самом деле вы можете использовать словарь непосредственно как:
resultGV.DataSource = nvpDictionary;
resultGV.DataBind();
Если он не отображает ключ / значение так, как вы хотите, вы всегда можете вернуться к LINQ. LINQ также позволит вам переименовать поля в любое, что вы хотите.
[РЕДАКТИРОВАТЬ] Если вы не можете перейти на использование словаря , сделайте копию NameValueCollection в качестве словаря в методе и привяжите его.
private void BindList(NameValueCollection nvpList)
{
Dictionary<string,string> temp = new Dictionary<string,string>();
foreach (string key in nvpList)
{
temp.Add(key,nvpList[key]);
}
resultGV.DataSource = temp;
resultGV.DataBind();
}
Если вы делаете это много, вы можете написать метод расширения для преобразования в словарь и использовать его так.
public static class NameValueCollectionExtensions
{
public static Dictionary<string,string> ToDictionary( this NameValueCollection collection )
{
Dictionary<string,string> temp = new Dictionary<string,string>();
foreach (string key in collection)
{
temp.Add(key,collection[key]);
}
return temp;
}
}
private void BindList(NameValueCollection nvpList)
{
resultGV.DataSource = nvpList.ToDictionary();
resultGV.DataBind();
}