संग्रह से सेट को निकालने का सबसे अच्छा तरीका क्या है, लेकिन फिर भी एक अलग संग्रह में हटाए गए आइटम को रखें?संग्रह से आइटम ढूंढें और निकालें
मैंने एक विस्तार विधि लिखा है जो ऐसा करता है, लेकिन मुझे लगता है कि एक बेहतर तरीका होना चाहिए। यहाँ मेरी समारोह है:
public static List<T> FindAndRemove<T>(this List<T> lst, Predicate<T> match)
{
List<T> ret = lst.FindAll(match);
lst.RemoveAll(match);
return ret;
}
और तुम इस तरह यह प्रयोग करेंगे:
List<String> myList = new List<String>();
myList.Add("ABC");
myList.Add("DEF");
myList.Add("ABC");
List<String> removed = myList.FindAndRemove(x => x == "ABC");
// myList now contains 1 item (DEF)
// removed now contains 2 items (ABC, ABC)
मैं 100% यकीन है कि क्या FindAll
और RemoveAll
तरीकों में पर्दे के पीछे पर चला जाता है नहीं कर रहा हूँ, लेकिन मुझे लगता है किसी भी तरह से एक सूची से दूसरी सूची में "स्थानांतरण" वस्तुओं का एक बेहतर तरीका होगा।
आपका समाधान सबसे कुशल है। –
आप कार्यान्वयन मेरे लिए ठीक लग रहा है। प्रतिलिपि .NET में एक सस्ता ऑपरेशन है इसलिए "स्थानांतरण" के लिए कोई कारण नहीं है (जब तक कि आपको कुछ थ्रेड/अपवाद सुरक्षा की आवश्यकता न हो, एक वस्तु एक समय में एक से अधिक संग्रह में कभी नहीं हो) – adrianm
मैं सहमत हूं। LINQ में निर्मित का उपयोग जीवन को आसान बनाने का उद्देश्य है .. दृश्यों पर क्या चल रहा है एमएस द्वारा चुने गए सबसे अच्छे समाधान होंगे। चूंकि आप सी # में हैं जो आंखों के लिए ठीक है, लेकिन वीबी आप डेज़ी चेन को अपनी क्वेरी 'रिटर्न = lst.FindAll (मैच) करेंगे। कोड स्टाइल पढ़ने के साथ इन-लाइन रखने के लिए सभी को हटाएं। – ppumkin