2011-01-20 16 views
5

स्ट्रिंग [0] में मान द्वारा आप अल्फान्यूमेरिक रूप से सूची को कैसे क्रमबद्ध करते हैं?सॉर्ट करें सूची <String[]>

+0

@jball: यह पहला वर्ण नहीं है। प्रत्येक तत्व तारों की एक सरणी है और वह उन सरणी के पहले तत्व द्वारा क्रमबद्ध है। उदाहरण के लिए, एक किताब की अनुक्रमणिका की कल्पना करो। प्रत्येक पंक्ति 'स्ट्रिंग []' हो सकती है जहां पहला तत्व इंगित किए गए शब्द को इंगित करता है और शेष तत्व पृष्ठ संख्याएं हैं। यहां पहले तत्व द्वारा क्रमबद्ध करने का अर्थ होगा। – jason

+0

मैं @jball के साथ हूँ। –

+0

@ जेसन, आह इसे गलत समझा। मैं आज अपने खेल पर हूं ... – jball

उत्तर

14

list.Sort((s, t) => String.Compare(s[0], t[0])); 

यह प्रयास करें list में प्रत्येक सरणी के पहले तत्व के आधार पर चुनना कोषगत होगा।

जब से मैं वास्तव में आप "alphanumerically" क्या मतलब है पता नहीं है, अगर आप मार्ग की तुलना एक कस्टम स्ट्रिंग की जरूरत है, तो आप इस करना चाहिए:

class MyStringComparer : IComparer<string> { 
    public int Compare(string s, string t) { 
     // details elided 
    } 
} 

और फिर

var comparer = new MyStringComparer(); 
list.Sort((s, t) => comparer.Compare(s[0], t[0])); 
+0

यदि सरणी में तार शून्य हो सकते हैं, तो आपका समाधान स्ट्रिंग के लिए बेहतर अनुकूल हो सकता है। कॉम्पैयर (एस [0], टी [0]) –

+0

यह अल्फान्यूमेरिकल आवश्यकता को कैसे हल करेगा? एक कस्टम तुलनाकर्ता डब्ल्यू/ओ, यह "50 ए" और "100 ए" के लिए गलत नहीं होगा? – BrokenGlass

+0

@ ब्रोकन ग्लास: ध्यान दें कि मैंने कस्टम तुलना के बारे में एक टिप्पणी की है क्योंकि मुझे नहीं पता कि उसका अर्थ "अल्फान्यूमेरिक" से क्या है। – jason

2

ले इस लिंक पर एक नज़र डालें here

उनके पास आईसीओएमपेयर इंटरफेस का एक बहुत अच्छा उदाहरण है। आप इसका उपयोग अपने स्वयं के तुलनात्मक बना सकते हैं और इसके माध्यम से अपनी सूची चला सकते हैं।

-1

यह एक बहुत oversimplified/छद्म कोड उदाहरण है ... वास्तव में यहाँ खींच ...

MyclassZeroIndexComparer : IComparable, IList(Of String[]) 
{ 
    private List<String[]> listOfStringArrays; 

    //expose this as a public member somewhere... 
    private List<String[]> listofStringArrayZeroIndex; 

    //internally store a list of only the first item you want to index.... 
    //implement your own, add,remove,clear 

    void Add(foo item) 
    { 
    listofStringArrays.Add(Item); 
    listofStringArrayZeroIndex.add(item[0]); 
    } 

    // continue implementing other methods in the same manner. 
} 
संबंधित मुद्दे