回答
假設您的意思是List<T>
,您可以反覆使用GetRange
方法。哎呀,你可以用LINQ做到這一點:
var lists = Enumerable.Range(0, (list.Count + size - 1)/size)
.Select(index => list.GetRange(index * size,
Math.Min(size, list.Count - index * size)))
.ToList();
或者你可以只使用一個循環,當然:
public static List<List<T>> Split(List<T> source, int size)
{
// TODO: Prepopulate with the right capacity
List<List<T>> ret = new List<List<T>>();
for (int i = 0; i < source.Count; i += size)
{
ret.Add(source.GetRange(i, Math.Min(size, source.Count - i)));
}
return ret;
}
這在某種程度上比使用GroupBy
更有效,但它僅限於List<T>
作爲輸入。
@Downvoter:護理解釋? – 2011-04-08 07:58:45
歷史:我從來沒有見過喬恩,甚至連一秒都沒有看到過-1。我會問他的位置:負選民會照顧詳細嗎? - >當然他把我打到那個:-) – Peter 2011-04-08 07:59:30
@Jon,我沒有倒下,但我認爲這是由於後來的例子。 – 2011-04-08 08:00:58
你可以使用LINQ:
var list = Enumerable.Range(1, 190);
var sublists = list
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index/50)
.Select(x => x.Select(v => v.Value).ToList())
.ToArray();
var list = new List<int>(Enumerable.Range(1,190));
var page_size = 50;
var max_pages = 1 + list.Count()/page_size;
for(int page = 1; page <= max_pages; page++) {
var chunk = list.Skip(page_size * (page-1)).Take(page_size);
// do whatever
}
我已經嘗試了遞歸方法。只是爲了看看它會是什麼樣子。
List<List<T>> SplitIntoChunks<T>(IEnumerable<T> originalList, int chunkSize)
{
if(originalList.Take(1).Count() == 0)
{
return new List<List<T>>();
}
var chunks = new List<List<T>> {originalList.Take(chunkSize).ToList()};
chunks.AddRange(SplitIntoChunks(originalList.Skip(chunkSize), chunkSize));
return chunks;
}
的
- 1. 根據索引將Python列表拆分成幾個列表
- 2. 使用索引拆分列表
- 3. 如何根據其中一個屬性拆分列表?
- 4. Mysql根據連接表拆分列值
- 5. 根據條件拆分列表(性別)
- 6. SQL - 根據值拆分列
- 7. 根據類拆分表 - jquery
- 8. 根據索引列
- 9. Scala如何在特定索引處拆分列表
- 10. 給定索引列表,如何在這些索引上拆分DataFrame?
- 11. 將列表拆分成指定索引處的列表元組
- 12. 根據列中的值將SQL表拆分爲多個表
- 13. 如何根據列表成員的屬性拆分(T)的通用列表?
- 14. 拆分根據字符內長度在子列表的列表
- 15. 根據分隔符拆分列值?
- 16. 如何根據mysql中的行值拆分列?
- 17. R:如何根據R中的符號拆分特定列?
- 18. R根據另一列拆分一列
- 19. 如何根據序言中的2個列表創建索引值列表
- 20. 如何根據列表中的索引創建兩個新列表?
- 21. 如何將列表拆分爲C#中的部分?
- 22. 根據4元素列表索引
- 23. 根據列/表名選擇索引
- 24. 根據列表項目內容(字符串)拆分列表
- 25. 根據python中的條件拆分列表字典
- 26. 拆分QString與拆分索引
- 27. 如何拆分數據集的數據表中的列的值?
- 28. Python - 根據索引在列表中重複列表
- 29. 根據索引列表,從列表中刪除項目
- 30. 如何拆分Python列表
可能重複[分割清單與LINQ子列表(http://stackoverflow.com/questions/419019/split-list-into-sublists-with-linq) – psubsee2003 2014-04-13 11:45:47