static void Main(string[] args) { List<String> tarArr = new List<String>(); tarArr.Add("a"); tarArr.Add("b"); tarArr.Add("c"); tarArr.Add("d"); tarArr.Add("e"); tarArr.Add("f"); //tarArr.Add("g"); tarArr.Add("h"); int size = tarArr.Count % 2 == 0 ? tarArr.Count / 2 : tarArr.Count / 2 + 1; List<List<String>> result = CreateList(tarArr, size); } public static List<List<T>> CreateList<T>(List<T> targe, int size) { List<List<T>> listArr = new List<List<T>>(); //获取被拆分的数组个数 int arrSize = targe.Count() % size == 0 ? targe.Count() / size : targe.Count() / size + 1; for (int i = 0; i < arrSize; i++) { List<T> sub = new List<T>(); //把指定索引数据放入到list中 for (int j = i * size; j <= size * (i + 1) - 1; j++) { if (j <= targe.Count() - 1) { sub.Add(targe[j]); } } listArr.Add(sub); } return listArr; }