相关疑难解决方法(0)

使用LINQ将列表拆分为子列表

有没有什么方法可以将项目索引作为每个拆分的分隔符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]

我还需要将结果列表大小作为此函数的参数.

c# linq data-structures

361
推荐指数
18
解决办法
19万
查看次数

将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)
  • int parts =子枚举数

c# asp.net collections ienumerable extension-methods

11
推荐指数
1
解决办法
9909
查看次数

使用Linq将DataTable分解为固定大小的块的简洁方法是什么?

更新:这是一个类似的问题


假设我有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)

c# linq ienumerable c#-3.0

8
推荐指数
2
解决办法
5607
查看次数