क्या आप नाम < स्ट्रिंग का उपयोग कर सकते हैं, स्ट्रिंग > NameValueCollection के बजाय। चूंकि शब्दकोश < टी, 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 आपको जो भी चाहें फ़ील्ड का नाम बदलने की अनुमति देगा।
[संपादित करें] यदि आप < टी, टी > का उपयोग करने के लिए नहीं बदल सकते हैं, तो विधि में एक शब्दकोश के रूप में 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();
}
मैं इसे एक्सचेंज ऑब्जेक्ट के रूप में शब्दकोश में नहीं बदल सकता और मैं अभी भी नेट 2.0 का उपयोग कर रहा हूं। लेकिन फिर भी धन्यवाद। हर राय मदद करता है। –
ध्यान रखें कि नाम ValueCollection में डुप्लिकेट कुंजी हो सकती है, जबकि शब्दकोश नहीं है। तो आप एक शब्दकोश में कनवर्ट करते समय परेशानी/खोने की जानकारी में भाग सकते हैं। – magnattic