यह अंतर्निहित है, लेकिन हो सकता है आप अपने "MyList" की घोषणा का उल्लेख किया जाना चाहिए था। मुझे इसे आपके लिए लिखने दें।
var myList=new List<KeyValuePair<string, int>>();
अब, इसका अर्थ यह है कि इस सूची में प्रत्येक आइटम KeyValuePair [string, int] का एक उदाहरण है।
अब, आपके प्रश्न पर आ रहा है।
सॉर्ट विधि के ओवरलोड में से एक "तुलना" प्रतिनिधि स्वीकार करता है, जो संग्रह के दो आइटम लेता है और एक पूर्णांक संख्या देता है।
public delegate int Comparison<T>(T x, T y)
अनिवार्य रूप से, तुम क्या कर रहे एक अनाम प्रतिनिधि जो दो आइटम तुलना पैदा कर रही है (आपके मामले में, आप 'मान' पर छँटाई कर रहे हैं आप कर सकते हैं भी प्रकार पर 'कुंजी') की "compareTo" पद्धति का उपयोग करके IComparable (स्ट्रिंग और int इस इंटरफेस को लागू)।
IComparable.Compare एक पूर्णांक देता है (जो आपकी सूची में वस्तुओं को व्यवस्थित करने के लिए सॉर्ट विधि द्वारा उपयोग किया जाता है) यह बताता है कि lhs (-1) से कम है, (1) या बराबर (0) rhs से बड़ा है।
एफवाईआई: यदि आप सी # 3.0 पर काम कर रहे हैं, तो आपको अज्ञात प्रतिनिधि की भी आवश्यकता नहीं है। आप लैम्ब्डा अभिव्यक्ति के बजाय का उपयोग कर सकते हैं (यह गुमनाम प्रतिनिधि परिभाषित करने के लिए एक आशुलिपि, more? है)
जैसे:
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
आशा स्पष्टीकरण उपयोगी है।
स्रोत
2009-11-20 06:07:19
+1 यह समझने के लिए कि आप जो अगले स्निपेट पर जाते हैं उसे बदलने के बजाय आप क्या कर रहे हैं उसे समझना चाहते हैं। –
एक उत्तर स्वीकार करने के लिए मत भूलना। –