您可以使用 Dictionary<string,string> 代替 NameValueCollection。由于 Dictionary<T,T> 实现了 IEnumerable,因此您可以这样使用 LINQ:
resultGV.DataSource = from item in nvpDictionary
select new { Key = item.Key, Value = item.Value };
resultGV.DataBind();
[编辑] 实际上你可以直接使用 Dictionary 作为:
resultGV.DataSource = nvpDictionary;
resultGV.DataBind();
如果它没有按照您想要的方式映射键/值,您可以随时返回 LINQ。LINQ 还允许您将字段重命名为您想要的任何名称。
[编辑] 如果您无法更改为使用 Dictionary<T,T>,请将 NameValueCollection 复制为方法中的 Dictionary 并绑定到它。
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();
}