您可以使用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();
[编辑] 实际上,您可以直接使用字典:
resultGV.DataSource = nvpDictionary
resultGV.DataBind()
如果它没有按照您的要求映射键/值,您可以回到LINQ。 LINQ还允许您将字段重命名为任何您想要的。
[编辑]如果无法更改为使用Dictionary<T,T>,请在方法中将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();
}