linq

2012-07-10 6 views
5

का उपयोग करके एक अवलोकन योग्य चयन को उलटना यह एक आसान होना चाहिए, और मुझे शर्म आती है कि मैंने इसे अभी तक खुद से बाहर निकाला है। मैं अपने wp7 ऐप में आइटम्स की सूची के क्रम को उलट करने की कोशिश कर रहा हूं। सूची एक पर्यवेक्षण चयन है। system.linq का उपयोग करते समय, इंटेलिजेंस मुझे ऐसा करने देता है: myList.Reverse(); , लेकिन यह काम नहीं लग रहा है। क्या मैं कुछ गलत कर रहा हूं, या क्या कोई और तरीका है जिससे मैं इसे आसानी से कर सकता हूं? linq

अग्रिम धन्यवाद।

+3

, कैसे "काम करने के लिए प्रतीत नहीं करता है?" क्या आपका मतलब है कि यूआई उलटा क्रम में आइटम नहीं दिखाता है? – user7116

+0

संबंधित प्रश्न, लेकिन जरूरी नहीं कि एक डुप्लिकेट http://stackoverflow.com/questions/10413535/reverse-order-of-observablecollection – user7116

उत्तर

23

Reverse एक IEnumerable देता है यह संग्रह संशोधित नहीं करता है, यह है कि ऐसा करने का एक vb.net जानवर बल तरीका है। संग्रह आप

collection = new ObservableCollection<YourType>(collection.Reverse()); 
+2

मैं जिस तरह का समाधान ढूंढ रहा था, वह है। और यह एक आकर्षण की तरह काम किया। धन्यवाद! –

+0

यह कार्य कैसे हो सकता है, जब संग्रह एक पर्यवेक्षण चयन है? उस वर्ग में कोई रिवर्स नहीं है ...? कम से कम, यह संदेश है जब मैं इसे कोशिश करता हूं। – Erik

+1

रिवर्स System.Linq.Enumerable क्लास के भीतर एक एक्सटेंशन विधि है। System.Linq के लिए उपयोग कथन जोड़ें; –

0

एक ऐसी कक्षा बनाएं जो अवलोकन योग्यता (टी) को प्राप्त करे और इसमें एक प्रकार का ऑब्जेक्ट लागू करें।

Public Sub Sort(ByVal comparer As IComparer(Of T)) 
    Dim j As Integer 
    Dim index As T 
    For i As Integer = 1 To Count - 1 
     index = Me(i) 
     j = i 
     While (j > 0) AndAlso (comparer.Compare(Me(j - 1), index) = 1) 
      Me(j) = Me(j - 1) 
      j = j - 1 
     End While 
     Me(j) = index 
    Next 
End Sub 
2

कर सकता है संशोधित करने के लिए आप संग्रह से बनाना नहीं करना चाहते हैं:

for (int i = 0; i < collection.Count; i++) 
    collection.Move(collection.Count - 1, i); 
संबंधित मुद्दे

 संबंधित मुद्दे