2011-03-14 13 views
14

के साथ एक सूची छंटनी क्यों नीचे दी गई कोड मेरी सूची को सॉर्ट नहीं करेगा?ऑर्डरबी

List<string> lst = new List<string>() { "bac", "abc", "cab" }; 
lst.OrderBy(p => p.Substring(0)); 

उत्तर

24

के बाद से OrderBy रिटर्न IOrderedEnumerable आपको क्या करना चाहिए:

lst = lst.OrderBy(p => p.Substring(0)).ToList(); 

आप निम्न कार्य कर सकते हैं:

lst.Sort(); 
+0

कूल ..simple n सही –

+0

ध्यान दें कि 'सूची .Sort', एक अस्थिर तरह है, जबकि OrderBy स्थिर है। और निश्चित रूप से इस मामले में ऑर्डरिंग * केवल * पहले अक्षर से है, जबकि किसी भी पैरामीटर के बिना 'list.Sort' का उपयोग करके संपूर्ण स्ट्रिंग द्वारा क्रमबद्ध किया जाएगा। –

+0

जॉन, '.Substring (0) 'पूरी स्ट्रिंग देता है, मुझे विश्वास है ... पहले चरित्र के लिए,' .Substring (0,1)' या '[0]' ... –

13

आप एक विधि है कि चर यह है बदल जाता है के साथ LINQ संचालन भ्रमित कर रहे हैं पर लागू (यानी वस्तु का एक उदाहरण विधि)।

LINQ संचालन (यानी ओडर बी) एक क्वेरी देता है। यह आपके ऑब्जेक्ट पर ऑपरेशन निष्पादित नहीं करता है (यानी lst)।

आप वापस अपने चर को नतीजा यह है कि प्रश्न के आवंटित करने के लिए की जरूरत है:

LINQ शब्दावली में
lst = lst.OrderBy(p => p).ToList(); 

1
string[] words = { "bac", "abc", "cab" }; 

var sortedWords = from w in words 
        orderby w 
        select w; 

Console.WriteLine("The sorted list of words:"); 

foreach (var w in sortedWords) 
{ 
    Console.WriteLine(w); 
} 
संबंधित मुद्दे