有没有什么方法可以将项目索引作为每个拆分的分隔符List<SomeObject>分成几个单独的列表SomeObject?
让我举例说明:
我有一个List<SomeObject>,我需要一个List<List<SomeObject>>或List<SomeObject>[],所以这些结果列表中的每一个将包含一组3个原始列表项(顺序).
例如.:
原始清单: [a, g, e, w, p, s, q, f, x, y, i, m, c]
结果列表: [a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]
我还需要将结果列表大小作为此函数的参数.
我正在尝试将一个集合拆分成多个集合,同时保持我对集合的排序.我尝试使用以下扩展方法,但它错误地打破了它们.基本上,如果我要查看集合中的项目,与加入的分解集合相比,顺序应该相同.这是我使用的代码不起作用:
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
{
int i = 0;
var splits = from name in list
group name by i++ % parts into part
select part.AsEnumerable();
return splits;
}
Run Code Online (Sandbox Code Playgroud)
更新:这是一个类似的问题
假设我有DataTable几千个DataRows.
我想将表拆分成较小行的块进行处理.
我认为C#3改进的数据处理能力可能有所帮助.
这是我到目前为止的骨架:
DataTable Table = GetTonsOfData();
// Chunks should be any IEnumerable<Chunk> type
var Chunks = ChunkifyTableIntoSmallerChunksSomehow; // ** help here! **
foreach(var Chunk in Chunks)
{
// Chunk should be any IEnumerable<DataRow> type
ProcessChunk(Chunk);
}
Run Code Online (Sandbox Code Playgroud)
什么应该替换的任何建议ChunkifyTableIntoSmallerChunksSomehow?
我真的很感兴趣有人会通过访问C#3工具来做到这一点.如果尝试应用这些工具是不合适的,请解释!
更新3(修改后的块,因为我真的想要表,而不是ienumerables;使用扩展方法 - 感谢雅各布):
最终实施:
处理分块的扩展方法:
public static class HarenExtensions
{
public static IEnumerable<DataTable> Chunkify(this DataTable table, int chunkSize)
{
for (int i = 0; i < table.Rows.Count; i += chunkSize)
{ …Run Code Online (Sandbox Code Playgroud)