Estoy intentando dividir una lista en una serie de listas más pequeñas.Dividir una lista en listas más pequeñas de N tamaño
Mi problema: Mi función para dividir listas no las divide en listas del tamaño correcto. ¿Debería dividirlos en listas de tamaño 30 pero en su lugar las divide en listas de tamaño 114?
¿Cómo puedo hacer que mi función divida una lista en X número de Listas de tamaño 30 o menos?
public static List<List<float[]>> splitList(List <float[]> locations, int nSize=30)
{
List<List<float[]>> list = new List<List<float[]>>();
for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--) {
List <float[]> subLocat = new List <float[]>(locations);
if (subLocat.Count >= ((i*nSize)+nSize))
subLocat.RemoveRange(i*nSize, nSize);
else subLocat.RemoveRange(i*nSize, subLocat.Count-(i*nSize));
Debug.Log ("Index: "+i.ToString()+", Size: "+subLocat.Count.ToString());
list.Add (subLocat);
}
return list;
}
Si utilizo la función en una lista de tamaño 144, entonces la salida es:
Índice: 4, tamaño: 120
Índice: 3, Tamaño: Índice 114
: 2 , Tamaño: 114
Índice: 1, Tamaño: 114
Índice: 0, Tamaño: 114
Si una solución LINQ es aceptable, [esta pregunta puede ser de alguna ayuda] (http://stackoverflow.com/questions/419019/split -list-into-sublists-with-linq). –
Específicamente la respuesta de Sam Saffron sobre la pregunta anterior. Y a menos que esto sea para una tarea escolar, solo usaría su código y me detendría. – jcolebrand