sorting - Composite sort in List<string> C# -


दोस्तों, मेरे पास एक सूची है:

  var filenames = नई सूची & lt; स्ट्रिंग & gt ; {"150_A_1_A", "150_A_1", "14 9_2", "14 9_1", "150_1_A", "150_A_2", "150_2_A"};  

और मुझे निम्न सूची प्राप्त करने के लिए इस सूची को सॉर्ट करने की आवश्यकता है:

  149_1 149_2 150_1_A 150_2_A 150_A_1 150_A_1_A   

कोई विचार? धन्यवाद

उसकी एक LINQ अभिव्यक्ति है जिसे आप की आवश्यकता है:

  var X = फाइलनाम। चयन करें (s = & gt; नया {value = s, splitted = s.Split ('_')})। क्रमबी (s = & gt; int.Parse (s.splitted [0])); के लिए (int i = 1; i & lt; x.max (s = & gt; s.splitted.Length); i ++) {var इस आई = i; X = x.ThenBy (s = & gt; यह I & gt; = s.splitted.Length? नल: s.splitted [यह आई]); } Var सॉर्ट किया गया = x.Select (s = & gt; s.value);  

सबसे पहले मैंने '_'

द्वारा स्ट्रिंग्स को विभाजित किया है, फिर मैं संख्यात्मक रूप से पहले फ़ील्ड को सॉर्ट करता हूं।

अंत में मैं सभी रीमाईंग फ़ील्ड वर्णानुक्रम से सॉर्ट करता हूं


Comments