2008-09-18 15 views
5

मेरे पास एक आईएलआईस्ट है जिसमें आइटम (माता-पिता पहले) शामिल हैं, उन्हें रिवर्स ऑर्डर में एक आरेख दस्तावेज़ में जोड़ा जाना चाहिए ताकि माता-पिता को अंतिम रूप से जोड़ा जा सके, ताकि शीर्ष पर खींचा जा सके। उपयोगकर्ता।मैं रिवर्स ऑर्डर में नेट नेटलिस्ट संग्रह को कैसे पुन: सक्रिय करूं?

ऐसा करने का सबसे अच्छा तरीका क्या है? वर्तमान में मैं जो कर रहा हूं उसके मुकाबले कुछ बेहतर/अधिक सुरुचिपूर्ण जो मैं नीचे पोस्ट करता हूं ..

उत्तर

7

यदि आपके पास .NET 3.5 है तो आप LINQ के रिवर्स का उपयोग कर सकते हैं?

foreach(var item in obEvtArgs.NewItems.Reverse()) 
{ 
    ... 
} 

(मान लें कि आप सामान्य IList के बारे में बात कर रहे हैं)

+0

मैं हारने वाला था क्योंकि मुझे सिस्टम नहीं मिला। इंटेलिजेंस में लिंक्स नेमस्पेस। मैं NotifyCollectionChangedEventArgs के साथ काम कर रहा हूं जो एक सिस्टम का उपयोग करता है। चयन। सूची .. इसलिए मैं किसी भी तरह से उलट नहीं कर सकता .. thx। मतदान किया – Gishu

+0

आप हमेशा एक (नई सूची (obEvtArgs.NewItems) का उपयोग कर सकते हैं)। रिवर्स(), लेकिन आपको उच्च मेमोरी उपयोग और कम प्रदर्शन मिलेगा। –

+0

:) लूप के लिए कम से कम मेरे लिए अधिक परिचित और पठनीय हैं। इन दिनों LINQ के साथ परिचित होने की आवश्यकता है ... – Gishu

0

न्यूइटम मेरी सूची यहां है ... हालांकि यह थोड़ा सा गुंजाइश है।

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--) 
      { 
       GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos)); 
      } 
+1

क्यों सवाल में इस शामिल नहीं? उत्तर के रूप में क्यों पोस्ट करें? –

+0

एफएक्यू से: क्या मैं अपने स्वयं के प्रश्न का उत्तर दे सकता हूं? क्या होगा यदि यह वास्तव में एक सवाल नहीं है? वास्तव में केवल प्रश्न में जवाब देने के बजाय, वास्तव में एक उत्तर सबमिट करना सबसे अच्छा है। यह उत्तर को अन्य लोगों के उत्तरों के खिलाफ उचित रूप से मतदान और मूल्यांकन करने की अनुमति देता है। – digiguru

2

Davy's answer के लिए टिप्पणियों के आधार पर, और Gishu's original answer, आप डाली सकता है आपकी एक सामान्य संग्रह System.Linq.Enumerable.Cast विस्तार विधि का उपयोग करने के लिए कमजोर टाइप System.Collections.IList:

var reversedCollection = obEvtArgs.NewItems 
    .Cast<IMySpecificObject>() 
    .Reverse(); 

यह मूल से एक जोरदार टाइप वस्तु पाने के लिए दोनों रिवर्स for पाश, और as कलाकारों के शोर को हटा अल संग्रह

0

आप LINQ की जरूरत नहीं है:

var reversed = new List<T>(original); // assuming original has type IList<T> 
reversed.Reverse(); 
foreach (T e in reversed) { 
    ... 
} 
संबंधित मुद्दे