Próbuję podzielić listę na serię mniejszych list.Podział listy na mniejsze listy o rozmiarze N
Mój problem: Moja funkcja podziału list nie dzieli ich na listy o prawidłowym rozmiarze. Powinien podzielić je na listy o rozmiarze 30, ale zamiast tego podzieli je na listy o rozmiarze 114?
Jak mogę ustawić funkcję podziału listy na liczbę X list o rozmiarze 30 lub mniejszą?
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;
}
przypadku korzystania z funkcji na liście wielkości 144, to wyjście jest:
Index: 4, wymiary: 120
Index: 3, wymiary: 114
Index: 2 Rozmiar: 114
Index: 1, Powierzchnia: 114
Index: 0 Rozmiar: 114
Jeśli rozwiązanie LINQ jest dopuszczalne, [to pytanie może być pomocne] (http://stackoverflow.com/questions/419019/split -list-into-sublists-with-linq). –
W szczególności odpowiedź Sam Saffron na to poprzednie pytanie. A jeśli nie jest to zadanie szkolne, po prostu użyłbym jego kodu i przestałbym. – jcolebrand