2009-06-24 14 views
5

इस भयंकर डेटा संरचना के साथ समाप्त हो गया मैं इस सूची को बार-बार पूरा करने वाला हूं।सूची के लिए एक alterantive लिए खोज रहे हैं <KeyValuePair <स्ट्रिंग, KeyValuePair <स्ट्रिंग, स्ट्रिंग >>>

कोई भी अंतर्निहित प्रकार के साथ कुछ बेहतर विकल्प के बारे में सोच सकता है?

+1

इस प्रश्न का उत्तर उपयोगी हो सकता है http://stackoverflow.com/questions/101825/whats-the- सबसे अच्छा तरीका-का-उपयोग-ए-जोड़ी-ट्रिपल-इत्यादि-मूल्य-एक-मूल्य-इन-सी –

उत्तर

10

सबसे अच्छा विकल्प आपकी खुद की ट्यूपल क्लास को लपेटना होगा, जैसे shipping in .NET 4.0

तो फिर तुम एक भी हो सकता है:

List<Tuple<string,string,string>> 

यह काफी आसान .NET 2.0 में लिखने के लिए है - यह मूल रूप से सिर्फ मूल्यों की एक त्रिक है, बजाय एक KeyValuePair में 2 होने का। हालांकि .NET 2.0 में मानों के तीन गुना के लिए कोई अंतर्निहित समतुल्य नहीं है।


संपादित करें:

एक और पोस्ट में क्वेरी करने के बारे में अपनी टिप्पणी पढ़ने के बाद, मैंने सोचा कि मैं के साथ-साथ यह उल्लेख चाहते हैं -

भले ही आप कुंजी 1 में अद्वितीय मानों की जरूरत नहीं है, आप नाटकीय रूप से अप क्वेरी/खोज के किसी भी प्रकार का उपयोग करके गति सकता है:

Dictionary<string, List<KeyValuePair<string,string>>> 

फिर, बजाय एक ही KeyValuePair भंडारण के लिए, आपको पहले ई में प्रमुख के माध्यम से उनमें से सूची में ऊपर दिखाई दे सकता है lement। यदि आपको किसी दिए गए पहले कुंजी के साथ सभी तत्वों को खोजने की आवश्यकता होती है तो यह बहुत तेज़ होगा ...

+0

मुझे शब्दकोश संस्करण पसंद है - मैं उस तरह की कुछ चीज़ के साथ आया था (दृष्टिकोण के माध्यम से समूह के रूप में) - मैं शायद उस स्ट्रिंग पर उस शब्द को कई बार खोज रहा हूं जो अब – JohnIdol

+0

है, मैंने यह किया है कई बार, और बहुत कम समस्याएं थीं। –

10
struct MrStruct 
{ 
    public string Key1, 
    public string Key2, 
    public string Value1 
} 


List<MrStruct>; 

यह मानते हुए कि जाती है कि आप सूची क्रमिक रूप से एक्सेस कर रहे हैं के रूप में आप कहते हैं अधिक पुनरावृति था। संभावित रूप से, खोज के लिए अन्य डेटा संरचनाएं तेज हो सकती हैं।

+0

सादा और सरल- मुझे यह पसंद है - क्या यह कुंजी 1 पर पूछताछ से बेहतर प्रदर्शन करेगा? – JohnIdol

+0

यदि कुंजी 1 अद्वितीय है तो आप सॉर्टेडलिस्ट <स्ट्रिंग, श्रीस्ट्रक्चर> पर विचार कर सकते हैं, अन्यथा आप प्रदर्शन के लिए MrStruct.Key1 पर आधारित अपनी सूची <> को सॉर्ट कर सकते हैं। – user7116

+0

आप किस प्रकार की पूछताछ कर रहे हैं? यदि कुंजी 1 अद्वितीय है, तो एक शब्दकोश का उपयोग करना बहुत तेज़ होगा ... –

संबंधित मुद्दे