Puede usar la cadena del diccionario <, cadena > en lugar de NameValueCollection. Desde Diccionario < T, T > implementa IEnumerable podría utilizar LINQ como tan:
resultGV.DataSource = from item in nvpDictionary
select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();
[EDIT] En realidad, es posible que pueda utilizar directamente como diccionario:
resultGV.DataSource = nvpDictionary;
resultGV.DataBind();
Si no se asigna clave/valor de la manera que desee, siempre puede volver a LINQ. LINQ también le permite cambiar el nombre de los campos a lo que desee.
[EDITAR] Si no puede cambiar para usar el diccionario < T, T >, haga una copia de NameValueCollection como un diccionario en el método y agréguelo a él.
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();
}
Si hace esto mucho, podría escribir un método de extensión para convertir a un diccionario y usarlo.
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();
}
No puedo cambiarlo a Diccionario como su objeto ext y sigo usando Net 2.0. Pero gracias de cualquier manera. Cada opinión ayuda. –
Tenga en cuenta que NameValueCollection puede tener claves duplicadas, mientras que Dictionary no. Por lo tanto, podría encontrarse con problemas/perder información al convertir a un diccionario. – magnattic