2009-12-29 7 views
8

मैं अब मैं 2 अलग डेटाबेस तालिकाओं से आप कुछ पूछना चाहते हो रही द्वारा इन कक्षाओं बनाने की तरहउन गुणों के साथ कक्षाओं की सूची संग्रह को कैसे क्रमबद्ध करें?

List<MyClass> test = new List<MyClass>(); 

मेरी कक्षाओं में मेरे संग्रह में कक्षाओं की एक सूची है मैं तो बस कुछ गुण

public string id {get; set;} 
public DateTime date {get; set;} 

है। मैं फिर उन 2 परिणामों को डेटाबेस टेबल से लेता हूं और फ़ोरैच लूप का उपयोग करके मैं एक नया MyClass ऑब्जेक्ट बनाता हूं और इसे अपने "परीक्षण" संग्रह में चिपकाता हूं।

अब एक बार इन सभी वर्गों सूची संग्रह में डाल रहे हैं। मैं उनके माध्यम से सॉर्ट करना चाहता हूं और कक्षाओं को "दिनांक" संपत्ति द्वारा आदेश देना चाहता हूं।

मैं यह कैसे कर सकता हूं? जब मैं उन्हें डेटाबेस से प्राप्त करता हूं तब मैं ऑर्डर नहीं कर सकता क्योंकि मैं उन्हें 2 अलग-अलग डेटाबेस टेबल से प्राप्त कर रहा हूं और उन्हें अलग से ऑर्डर करने के लिए केवल प्रत्येक अनुभाग के लिए आदेश दिया होगा लेकिन तालिका में 12/12/2009 हो सकते हैं और ऐसा हो सकता है टेबल दो। तो उन्हें एक साथ आदेश देने की जरूरत है।

तो मैं कुछ कैसे उपयोग LINQ या कुछ और उन्हें ऑर्डर करने के लिए कर सकते हैं?

धन्यवाद

उत्तर

20

कैसे के बारे में:

list.Sort((x,y) => DateTime.Compare(x.date, y.date)); 

जो मौजूदा सूची सॉर्ट करता, या:

var sorted = list.OrderBy(x=>x.date).ToList(); 

जो एक दूसरी सूची बनाता है।

+0

हां जैसा कि मैंने नीचे बताया है मैंने पोस्ट करने से पहले दूसरा रास्ता करने की कोशिश की लेकिन उपयोग नहीं किया। टोस्टिस्ट() तो ऑर्डर हमेशा एक नई सूची बनाता है जबकि सॉर्ट नहीं करता है? – chobo2

+1

हां। List.Sort सूची में जगह टाइप करता है, इसलिए मूल सूची बदल दी जाती है। LINQ (दूसरी विधि) एक नया गणित बनाता है। "ToList" जोड़कर, आप इसे INNumerable के बजाय सूची में बदल देते हैं। यदि आप केवल फ़ोरैच लूप में परिणामों का उपयोग करने जा रहे हैं, तो आप "ToList()" विधि को बंद कर सकते हैं। –

+0

(वह क्या कहा ...) –

2

एक बार जब आप अपनी सूची में अपनी कक्षाओं है, और सूची पूरा हो गया है:

List<MyClass> testList = new List<MyClass>(); 
// populate the list... 

var orderedList = testList.OrderBy(x => x.date).ToList(); 
+0

आह मैं कोशिश की लेकिन लेकिन नहीं रखा। इसके पीछे .सूची()। मैंने देखा कि कुछ लोग तुलनात्मक कार्य का उपयोग करते हैं जो किसी भी फायदे या कुछ भी लाता है? – chobo2

3

आप जगह में उन्हें क्रमबद्ध करना चाहते हैं, तो आप List<T>.Sort उपयोग कर सकते हैं:

test.Sort((l,r) => l.date.CompareTo(r.date)); 

आप उन्हें एक नए परिणाम सेट में सॉर्ट करने के लिए चाहते हैं, LINQ बहुत अच्छा है:

var sortedResults = from mc in test 
        order by mc.date 
        select mc; 
संबंधित मुद्दे