문자열 > 대신 Dictionary < 문자열을 사용할 수 있습니까? NameValueCollection. 사전 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를 사용하여 필드의 이름을 원하는대로 변경할 수 있습니다.
[편집] 사전 < 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();
}
Ext 개체로 사전을 변경할 수없고 여전히 Net 2.0을 사용하고 있습니다. 하지만 고마워. 어쨌든. 모든 의견이 도움이됩니다. –
Dictionary는 그렇지 않지만 NameValueCollection에는 중복 키가있을 수 있습니다. 따라서 문제가 생기거나 사전으로 변환 할 때 정보를 잃을 수 있습니다. – magnattic