2009-05-29 23 views

cevap

15

LINQ yaratıyor olsa da bu List<T> bir esinti yapar GetRange yöntemi vardır, kolay ve (Skip ve Take kullanarak) sadece listelerde daha geneldir:

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

(index içeriğidir kopyalamak için ilk öğe ve count kopyalamak için kaç öğedir.)

"Dizelerin iki boyutlu listesi" derken, bir dizi mi demek istiyorsunuz? Eğer öyleyse, sivri bir dizi (string[][]) veya dikdörtgen bir dizi (string[,]) mu demek istiyorsun?

+1

Bu, listenin sığ bir kopyasıdır (Bu liste yeni listeye kopyalanmaz, referansları vardır). Yani dikkatli olmalısınız –

+1

@Diode: Listenin içeriğini yeni listeye kopyalar - listenin içeriği * * string referanslarıdır. Sığ bir kopya olduğu doğru, ancak dizeler değişmez olduğu için, sığ bir kopya neredeyse bir nüshadan neredeyse ayırt edilemez. –

0

ben soru olsun emin değilim ama bir örnek kullanıyor İşte

(eğer diziler Bahsettiğiniz dizeleri listeleri ) Array.Copy fonksiyonu bakardım .NET 2.0 Framework C#:

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 kopyalamak hangi dizeleri belirlemek için bir doğrulama'yı yazalım olacaktır:

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)); 

Bu, "üç" yazdırır, çünkü 5 veya daha fazla karakter uzunluğundadır. Diğerleri göz ardı edilir.

İlgili konular