मैं एक सूची <string> कैसे ऑर्डर कर सकता हूं?


121

मेरे पास यह है List<string>:

IList<string> ListaServizi = new List<string>();

मैं इसे वर्णानुक्रम और आरोही कैसे बना सकता हूं?


4
क्या आपने .Sort msdn.microsoft.com/en-us/library/b0zbh7b6%28v=vs.90%29.aspx की कोशिश की है ?
मैथ्यू

यहाँ देखें dotnetperls.com/sort-list
Ron van der Heijden

क्रमबद्ध विधि; उल्टे के साथ संयोजन में अगर यू को भी उतरना चाहिए
नातान क्यू

जवाबों:


238
ListaServizi = ListaServizi.OrderBy(q => q).ToList();

@ आदेश का उपयोग करने के लिए एक कारण यह है कि ListaServizi एक क्रमबद्ध विधि नहीं है क्योंकि यह के रूप में घोषित किया जाएगा IList<string>। यह कोड वास्तव में लिखित के रूप में काम करेगा, जो उन उत्तरों के विपरीत है जिनके साथ अधिक उत्थान प्राप्त हुए हैं ListaServizi.Sort()। मैं यह नहीं कह रहा हूं कि यह वह समाधान है जिसे मैं चुनूंगा, लेकिन यह वास्तव में एकमात्र सही उत्तर था जब मैंने अपना उत्तर पोस्ट किया था।
फोगोग

यदि यह समाधान नहीं है जिसे आप चुनते हैं तो इसे उत्तर के रूप में क्यों प्रस्तावित करें? प्रस्ताव दें कि आप उत्तर के रूप में क्या करेंगे; यदि इसका मतलब है कि IList से List में प्रकार बदलना ताकि आप उस .Sortपर कॉल कर सकें, तो ऐसा क्यों न करें।
सेविली

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

1
@ AurélienRibon समस्या कथन के बारे में कुछ भी नहीं कहता है कि चर के प्रकार को बदला नहीं जा सकता है। आवश्यकताओं को विशेष रूप से छांटना है List। और इस उत्तर से जुड़ी लागत गैर-तुच्छ है और अनावश्यक भी है। यह सचमुच कुछ भी नहीं हासिल करता है । यह कोड में जटिलता जोड़ता है, यह कम संक्षिप्त है, यह कम कुशल है, यहां शाब्दिक रूप से नुकसान के अलावा कुछ भी नहीं है।
13


12

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

यदि आप जानते हैं कि 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>, तो एक टिप्पणी छोड़ दें, और मैं इसे हल करने के लिए एक या दो सुझाव दूंगा।


5
ListaServizi.Sort();

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


3
ListaServiziहै IList<string>; इंटरफ़ेस में कोई Sortविधि नहीं है । आपको कम से कम यहां कलाकारों की जरूरत है।
14

3
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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.