2009-05-29 16 views

Antwort

15

Obwohl LINQ tut dies einfach machen und allgemeiner als nur Listen (mit Skip und Take) List<T> hat die GetRange Verfahren, das es eine Brise macht:

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

(Wo index ist der Index der erstes Element zu kopieren, und count ist, wie viele Elemente zu kopieren.)

Wenn Sie sagen "zweidimensionale Liste der Zeichenfolgen" - meinst du ein Array? Wenn ja, meinst du ein gezacktes Array (string[][]) oder ein rechteckiges Array (string[,])?

+1

Dies ist eine flache Kopie der Liste (Dies gilt nicht, die Liste zu neuer Liste kopieren, die references). Sie müssen also vorsichtig sein –

+1

@Diode: Es kopiert den Inhalt der Liste in die neue Liste - der Inhalt der Liste * sind * String-Referenzen. Sie haben Recht, dass es eine flache Kopie ist, aber da Strings unveränderlich sind, ist eine seichte Kopie sowieso kaum von einer tiefen Kopie zu unterscheiden. –

0

Ich bin mir nicht sicher, ob ich die Frage bekommen, aber ich würde Blick auf die Array.Copy Funktion (wenn durch Listen von Zeichenketten Sie beziehen sich auf Arrays)

Hier ist ein Beispiel unter Verwendung von C# in .NET 2.0 Framework:

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 lassen Sie einen Prädikats schreiben, um zu bestimmen, welche Saiten zu kopieren:

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

Dies gibt "drei" aus, weil es 5 oder mehr Zeichen lang ist. Die anderen werden ignoriert.

Verwandte Themen