2012-04-18 4 views
80

मैं इस सूची है? वर्णमाला और आरोही।मैं सूची <string> सूची कैसे ऑर्डर कर सकता हूं?</p> <pre><code>IList<string> ListaServizi = new List<string>() { }; </code></pre> <p>मैं इसे कैसे इसके अंदर तार की वजह से आदेश कर सकते हैं:

+3

आप की कोशिश की '.Sort' http://msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs है। 90% 29.aspx? – Matthew

+0

सॉर्ट विधि; रिवर्स के साथ संयोजन में यदि आपको –

+0

अवरोही की आवश्यकता है तो यहां देखें http://www.dotnetperls.com/sort-list –

उत्तर

155
ListaServizi = ListaServizi.OrderBy(q => q).ToList(); 
+0

@ सर्वी ऑर्डरबी का उपयोग करने का एक कारण यह होगा कि ListaServizi में सॉर्ट विधि नहीं है क्योंकि इसे 'IList' के रूप में घोषित किया गया है '। यह कोड वास्तव में लिखित रूप में काम करेगा, उन उत्तरों के विपरीत जो 'ListaServizi.Sort() 'के साथ अधिक उत्थान प्राप्त करते हैं। मैं यह नहीं कह रहा हूं कि यह वह समाधान है जिसे मैं चुनूंगा, लेकिन जब मैंने अपना जवाब पोस्ट किया तो यह वास्तव में एकमात्र सही जवाब था। – phoog

+0

यदि यह समाधान नहीं है जिसे आप चुनना चाहते हैं तो इसे उत्तर के रूप में क्यों प्रस्तावित करें? प्रस्ताव के रूप में आप क्या करेंगे प्रस्ताव दें; अगर इसका मतलब है कि आईएलआईस्ट से सूची में टाइप बदलना है तो आप उस पर '.Sort'' कॉल कर सकते हैं, फिर ऐसा क्यों न करें। – Servy

+1

@ सर्वी उन्होंने समस्या विनिर्देश को बदले बिना इस मुद्दे को हल किया। दूर तक, यह पसंदीदा तरीका है। इसके अलावा, समस्या कथन कार्यान्वयन पैटर्न पर इंटरफेस का उपयोग करता है, जो बहुत महत्वपूर्ण है। सूची प्रकार में परिवर्तन का प्रस्ताव सही है, लेकिन सही जवाब के बाद वैकल्पिक उत्तर के रूप में किया जाना चाहिए, क्योंकि इसे समस्या को बदलने की आवश्यकता है। –

31

आप Sort

List<string> ListaServizi = new List<string>() { }; 
ListaServizi.Sort(); 
4
ListaServizi.Sort(); 

का उपयोग करते हैं जाएगा कि आप के लिए कर सकते हैं। तारों की एक सूची के साथ यह काफी सरल है। वस्तुओं को सॉर्ट करते समय आपको थोड़ा सा चालाक होना चाहिए।

+1

'लिस्टार्विज़ी' 'IList ' है; इंटरफ़ेस में 'सॉर्ट' विधि नहीं है। आपको कम से कम यहां एक कलाकार की जरूरत है। – phoog

7

अन्य उत्तरों Sort का सुझाव देने के लिए सही हैं, लेकिन ऐसा लगता है कि भंडारण स्थान IList<string के रूप में टाइप किया गया है। Sort इंटरफ़ेस का हिस्सा नहीं है।

यदि आप जानते हैं कि ListaServizi में हमेशा List<string> होगा, तो आप या तो इसके घोषित प्रकार को बदल सकते हैं, या कास्ट का उपयोग कर सकते हैं।

if (typeof(List<string>).IsAssignableFrom(ListaServizi.GetType())) 
    ((List<string>)ListaServizi).Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

शायद अधिक मुहावरेदार: आप सुनिश्चित नहीं हैं, तो आप प्रकार परीक्षण कर सकते हैं

List<string> typeCheck = ListaServizi as List<string>; 
if (typeCheck != null) 
    typeCheck.Sort(); 
else 
{ 
    //... some other solution; there are a few to choose from. 
} 

आप जानते हैं कि ListaServizi कभी कभी IList<string> का एक अलग कार्यान्वयन का आयोजन करेगा, तो एक टिप्पणी छोड़, और मैं इसे सॉर्ट करने के लिए एक सुझाव या दो जोड़ दूंगा।

2
 List<string> myCollection = new List<string>() 
     { 
      "Bob", "Bob","Alex", "Abdi", "Abdi", "Bob", "Alex", "Bob","Abdi" 
     }; 

     myCollection.Sort(); 
     foreach (var name in myCollection.Distinct()) 
     { 
      Console.WriteLine(name + " " + myCollection.Count(x=> x == name)); 
     } 

उत्पादन: अब्दी 3 एलेक्स 2 बॉब 4

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