Tôi đang cố chia danh sách thành một loạt danh sách nhỏ hơn.Chia danh sách thành các danh sách nhỏ hơn có kích thước N
Vấn đề của tôi: Chức năng tách danh sách của tôi không chia chúng thành danh sách có kích thước chính xác. Nó nên chia chúng thành các danh sách có kích thước 30 nhưng thay vào đó nó chia chúng thành các danh sách có kích thước 114?
Làm cách nào để chức năng của tôi tách danh sách thành X số Danh sách có kích thước 30 hoặc nhỏ hơn?
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;
}
Nếu tôi sử dụng các chức năng trên một danh sách các kích thước 144 thì đầu ra là:
Index: 4, Kích thước: 120
Index: 3, Kích thước: 114
Index: 2 , Kích thước: 114
Index: 1, Kích thước: 114
Index: 0, Kích thước: 114
Nếu một giải pháp LINQ được chấp nhận, [câu hỏi này có thể có một số trợ giúp] (http://stackoverflow.com/questions/419019/split) -list-into-sublists-với-linq). –
Câu trả lời cụ thể của Sam Saffron về câu hỏi trước đó. Và trừ khi điều này là cho một bài tập ở trường, tôi sẽ chỉ sử dụng mã của anh ấy và dừng lại. – jcolebrand