.NET

2008-09-29 6 views
14

में संग्रह संग्रह आइटम को अन्य संग्रह में कॉपी करें .NET (VB) में, मैं सभी संग्रहों को एक संग्रह में कैसे ले सकता हूं, और उन्हें दूसरे संग्रह में जोड़ सकता हूं (दूसरे संग्रह में पूर्व-मौजूदा आइटम खोने के बिना) ? मैं कुछ के लिए देख रहा हूँ इस की तुलना में थोड़ा अधिक कुशल:.NET

For Each item As Host In hostCollection1 
    hostCollection2.Add(item) 
Next 

मेरे संग्रह जेनेरिक संग्रह हैं, आधार वर्ग से विरासत में मिली - संग्रह (के)

उत्तर

32

आप AddRange: hostCollection2.AddRange(hostCollection1) का उपयोग कर सकते हैं।

+2

'AddRange' 'संग्रह' का सदस्य नहीं है। –

4

मुझे पता है तुम वीबी मांग रहे हैं, लेकिन सी # में आप संग्रह के कन्स्ट्रक्टर का उपयोग किसी भी आईनेमरेबल के साथ शुरू करने के लिए कर सकते हैं। उदाहरण के लिए:

List<string> list1 = new List<string>(); 
list1.Add("Hello"); 
List<string> list2 = new List<string>(list1); 

शायद वीबी में भी वही चीज़ मौजूद है।

+0

लेकिन जाएगा पूर्व मौजूदा List2 में आइटम खो दिया जा सकता हूँ? मैं दूसरे संग्रह में जोड़ने की कोशिश कर रहा हूं, बिल्कुल पहले संग्रह को डुप्लिकेट नहीं करता हूं। –

+0

ओह क्षमा करें, मुझे गलत समझा। उस स्थिति में, मैं अपनी सूची 2 ऑब्जेक्ट पर AddRange विधि का उपयोग करूंगा। –

+0

आपने अभी अपनी पोस्ट में जोड़ा है कि आप मूल संग्रह कक्षा का उपयोग कर रहे हैं।इस मामले में, कोई भी AddRange समाधान काम करने जा रहे हैं। यदि आप .NET 3.5 का उपयोग कर रहे हैं, तो हम विस्तार विधि मार्ग जा सकते हैं ... –

0

Array.Copy आपकी समस्या का समाधान हो सकता है।

1

बेन समाधान VB.Net के लिए मौजूद है:

Dim collection As IEnumerable(Of T)  
Dim instance As New List(collection) 

यहाँ जुड़ा हुआ documentation है।

हालांकि, एक बात जो मैं चिंतित हूं, यह है कि यह एक उथली प्रतिलिपि या गहरी प्रतिलिपि करता है या नहीं।

2

यह न भूलें कि आप एक संदर्भ प्राप्त करेंगे और एक प्रति नहीं यदि आप अपनी सूची 2 को सूची 1 में प्रारंभ करते हैं। जब तक आप गहरे क्लोन नहीं करते हैं तब तक आपके पास तारों का एक सेट होगा।

2

मैं हमेशा List<T>.AddRange(otherList<T>) फ़ंक्शन का उपयोग करता हूं। दोबारा, यदि यह वस्तुओं की एक सूची है, तो वे एक ही बात का संदर्भ लेंगे।

आप निर्दिष्ट नहीं किया है संग्रह किस तरह हालांकि, AddRange CollectionBase में मौजूद नहीं है विरासत में मिला वस्तुओं

1

जब तक आप वस्तुओं के एक ही सेट संशोधित करने के लिए दोनों संग्रहों चाहते हैं, तो प्रत्येक वस्तु कॉपी किया जा करने के लिए जा रहा है ढेर के लिए। हो सकता है कि आप अपने परिदृश्य का वर्णन कर सकें कि यह आपके प्रदर्शन को कैसे प्रभावित कर रहा है और हम एक अच्छा समाधान पा सकते हैं।

1

यह उपलब्ध है जब कोई IList का उपयोग करता है। लेकिन AddRange विधि Collection में उपलब्ध नहीं है। मैंने Collection से List कास्टिंग करने का विचार किया, लेकिन यह संभव नहीं है।

0
नहीं

यह एक

के लिए यकीन है कि क्यों नहीं सिर्फ इस

Dim newlines = _singSongs.ToList 

.tolist यह एक पूरी नई सूची बनाता है इसका मतलब है कि

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