2008-10-03 10 views
19

मेरे पास ऑब्जेक्ट्स की एक सूची है, प्रत्येक में आईडी, कोड और विवरण शामिल है।मैं सूची <object> को सी # में हैशटेबल में कैसे परिवर्तित कर सकता हूं?

मैं एक Hashtable में यह सूची कन्वर्ट करने के लिए, का उपयोग कर कुंजी के रूप में विवरण और मूल्य के रूप में ईद की जरूरत है।

ऐसा इसलिए हैशटेबल को JSON को क्रमबद्ध किया जा सकता है।

सूची < ऑब्जेक्ट > से सूची में प्रत्येक आइटम के माध्यम से जाने के लिए लूप लिखने के बिना हैशटेबल में कनवर्ट करने का कोई तरीका है?

उत्तर

32

मान लीजिए कि आपकी सूची में प्रकार की वस्तुएं हैं (एक int आईडी और स्ट्रिंग विवरण के साथ)।

आप एक शब्दकोश में इस तरह उस सूची चालू करने के लिए LINQ का उपयोग कर सकते हैं:

var dict = myList.Cast<Foo>().ToDictionary(o => o.Description, o => o.Id); 
+1

वह उदाहरण स्पॉट पर है। लिंक बाएं, दाएं और केंद्र की समस्याओं को हल करता रहता है। –

+0

ग्रेट सामान! फ्रैंक के लिंक के उदाहरणों का उपयोग करके मैंने जो लिखा है, वह लगभग समान है। आपकी मदद के लिए बहुत बहुत धन्यवाद :) –

5

यदि आपके पास लिंक तक पहुंच है, तो आप ToDictionary फ़ंक्शन का उपयोग कर सकते हैं।

+0

बहुत बढ़िया! यही वह है जिसकी तलाश में मैं हूं। धन्यवाद :) –

1

theList.ForEach (प्रतिनिधि (theObject obj) {dic.Add (obj.Id, obj.Description);});

+0

समांतर संस्करण बहुत खतरनाक है; आप मान रहे हैं कि शब्दकोश थ्रेड-सुरक्षित होने जा रहा है, जिसे इसे * नहीं * के रूप में दस्तावेज किया गया है। अब, यदि ToDictionary का एक PFX संस्करण था, तो यह अलग हो सकता है - लेकिन .dd (...) - जोखिम भरा; -पी –

+1

कितना सच है! :) मैंने अपनी प्रविष्टि से उस कार्यान्वयन को हटा दिया है। – noocyte

+0

बहुत अच्छा जवाब। यह एक प्रशंसापत्र है। http://diditwith.net/2006/10/05/PerformanceOfForeachVsListForEach.aspx – anonymous

0

सिस्टम को भी देखें। कोलेक्शन। ऑब्जेक्टमोडेल.केड कोलेक्शन < टीके, टीआईटीम>। ऐसा लगता है कि आप क्या करना चाहते हैं इसके लिए एक बेहतर मैच की तरह लगता है।