Können Sie das Wörterbuch < Zeichenfolge, Zeichenfolge > anstelle von NameValueCollection verwenden. Da Wörterbuch < T, T > IEnumerable implementiert könnten Sie LINQ wie so verwenden:
resultGV.DataSource = from item in nvpDictionary
select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();
[EDIT] Eigentlich können Sie in der Lage sein Wörterbuch zu verwenden, um direkt als:
resultGV.DataSource = nvpDictionary;
resultGV.DataBind();
Wenn es nicht Karte gibt Schlüssel/Wert wie Sie möchten, können Sie immer zu LINQ zurückkehren. Mit LINQ können Sie die Felder auch umbenennen, wie Sie möchten.
[EDIT] Wenn Sie das Wörterbuch < T, T > nicht ändern können, erstellen Sie eine Kopie der NameValueCollection als Dictionary in der Methode und binden Sie sie an die Methode.
Wenn Sie dies viel tun, könnten Sie eine Erweiterungsmethode in ein Wörterbuch zu konvertieren, und verwenden Sie es so.
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();
}
Ich kann es nicht zu Dictionary ändern, da es ext-Objekt ist, und ich benutze immer noch Net 2.0. Danke trotzdem. Jede Meinung hilft. –
Beachten Sie jedoch, dass NameValueCollection doppelte Schlüssel haben kann, während Dictionary nicht funktioniert. So könnten Sie beim Konvertieren in ein Dictionary Probleme bekommen/Informationen verlieren. – magnattic