जवाबों:
आप यह कोशिश कर सकते हैं:
List<Int32> copy = new List<Int32>(original);
या यदि आप Linq के साथ C # 3 और .NET 3.5 का उपयोग कर रहे हैं, तो आप यह कर सकते हैं:
List<Int32> copy = original.ToList();
MyClass
इसके बजाय प्रकार के हैं Integer
, तो क्या यह आइटम को भी कॉपी करता है, या केवल उन्हें संदर्भित करता है?
lstStudentClass
यह एक है IEnumerable<StudentClass>
, यह काम करेगा। यदि आप अनुभव करते हैं तो आपको अधिक जानकारी प्रदान करने की आवश्यकता है।
एक सूची की सामग्री को दूसरी सूची में जोड़ने के लिए जो पहले से मौजूद है, आप इसका उपयोग कर सकते हैं:
targetList.AddRange(sourceList);
यदि आप सूची की एक नई प्रति बनाना चाहते हैं, तो लस का उत्तर देखें।
तत्वों की सूची के लिए
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
यदि आप सभी तत्वों को कॉपी करना चाहते हैं
List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
यदि आप पहले 3 तत्वों को कॉपी करना चाहते हैं
List<string> lstNew = lstTest.GetRange(0, 3);
यह विधि आपकी सूची की एक प्रति तैयार करेगी लेकिन आपका प्रकार क्रमबद्ध होना चाहिए।
उपयोग:
List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();
तरीका:
public static List<T> CopyList<T>(this List<T> lst)
{
List<T> lstCopy = new List<T>();
foreach (var item in lst)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, item);
stream.Position = 0;
lstCopy.Add((T)formatter.Deserialize(stream));
}
}
return lstCopy;
}
ठीक है, यह अच्छी तरह से काम कर रहा है GetRange () के ऊपर दिए गए सुझावों से मेरे लिए एक तर्क के रूप में एक सूची के साथ काम नहीं करता है ... इसलिए ऊपर की पोस्ट से चीजों को थोड़ा मीठा करना: (सभी को धन्यवाद :)
/* Where __strBuf is a string list used as a dumping ground for data */
public List < string > pullStrLst( )
{
List < string > lst;
lst = __strBuf.GetRange( 0, __strBuf.Count );
__strBuf.Clear( );
return( lst );
}