2009-05-29 12 views

उत्तर

15

हालांकि LINQ पड़ता है यह आसान है और सिर्फ सूची (Skip और Take का प्रयोग करके) की तुलना में अधिक सामान्य, List<T>GetRange विधि है जो यह एक हवा बनाता है:

List<string> newList = oldList.GetRange(index, count); 

(कहाँ index के सूचकांक है कॉपी करने के लिए पहला तत्व, और count कॉपी करने के लिए कितने आइटम हैं।)

जब आप "तारों की दो आयामी सूची" कहते हैं - क्या आपका मतलब एक सरणी है? यदि हां, तो क्या आपका मतलब है एक jagged सरणी (string[][]) या एक आयताकार सरणी (string[,])?

+1

यह सूची की एक उथली प्रति है (यह सूची को नई सूची में कॉपी नहीं करता है, इसमें संदर्भ हैं)। इसलिए आपको सावधान रहना होगा –

+1

@Diode: यह सूची की सामग्री को नई सूची में कॉपी करता है - सूची की सामग्री * स्ट्रिंग संदर्भ हैं। आप सही हैं कि यह एक उथली प्रतिलिपि है, लेकिन तारों के रूप में अपरिवर्तनीय हैं, वैसे भी एक उथली प्रति एक गहरी प्रतिलिपि से लगभग अलग नहीं है। –

0

मुझे यकीन है कि मैं सवाल नहीं हूँ, लेकिन मैं एक उदाहरण उपयोग कर रहा है

यहाँ (यदि तार की सूची आप सरणियों संदर्भ दे रहे द्वारा ) Array.Copy समारोह में लगेगा सी .NET 2.0 फ्रेमवर्क में #:

String[] listOfStrings = new String[7] 
           {"abc","def","ghi","jkl","mno","pqr","stu"}; 
String[] newListOfStrings = new String[3]; 

// copy the three strings starting with "ghi" 
Array.Copy(listOfStrings, 2, newListOfStrings, 0, 3); 

// newListOfStrings will now contains {"ghi","jkl","mno"} 
0

FindAll आप निर्धारित करने के लिए तार की नकल करने के लिए एक विधेय बारे में सूचित करेंगे:

List<string> list = new List<string>(); 
list.Add("one"); 
list.Add("two"); 
list.Add("three"); 

List<string> copyList = list.FindAll(
    s => s.Length >= 5 
); 

copyList.ForEach(s => Console.WriteLine(s)); 

यह प्रिंट करता है "तीन", क्योंकि यह 5 या अधिक वर्ण लंबा है। दूसरों को नजरअंदाज कर दिया जाता है।

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