回答:
あなたはこれを試すことができます:
List<Int32> copy = new List<Int32>(original);
または、C#3と.NET 3.5を使用していて、Linqでこれを行うことができます。
List<Int32> copy = original.ToList();
MyClass
なくタイプである場合、アイテムもInteger
コピーしますか、それとも単に参照しますか?
lstStudentClass
ているIEnumerable<StudentClass>
、それが動作します。それ以外の場合は、さらに情報を提供する必要があります。
あるリストの内容を既存の別のリストに追加するには、次のように使用できます。
targetList.AddRange(sourceList);
リストの新しいコピーを作成するだけの場合は、Lasseの回答を参照してください。
要素のリスト
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 );
}
ここでは別の方法ですが、他の方法に比べて少し悪いです。
List<int> i=original.Take(original.count).ToList();
ToList()
直接しないのですか?