2009-05-29 23 views

Respuesta

15

Aunque LINQ hace hacer esto fácil y más general que sólo listas (utilizando Skip y Take), List<T> tiene el método GetRange lo que hace que sea muy fácil:

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

(Donde index es el índice de la primer elemento para copiar, y count es la cantidad de elementos para copiar.)

Cuando dices "dos dimensiones de la lista de cadenas", ¿te refieres a una matriz? Si es así, ¿se refiere a una matriz dentada (string[][]) o una matriz rectangular (string[,])?

+1

Esta es una copia superficial de la lista (Esto no copia la lista a la nueva lista, tiene las referencias). Por lo tanto, debe tener cuidado –

+1

@Diode: copia el contenido de la lista en la nueva lista; el contenido de la lista * son * referencias de cadena. Tiene razón en que es una copia superficial, pero como las cuerdas son inmutables, una copia superficial es casi indistinguible de una copia profunda de todos modos. –

0

no estoy seguro consigo la pregunta, pero me gustaría ver en el Array.Copy función (si por listas de cadenas las que te refieres matrices)

Aquí hay un ejemplo usando C# en .NET Framework 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 le permitirá escribir un predicado para determinar qué cadenas para copiar:

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

Esto imprime "tres", porque tiene 5 o más caracteres. Los otros son ignorados.

Cuestiones relacionadas