当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用Linq将DataTable分解为固定大小的块的简洁方法是什么?》经验,为你挑选了2个好方法。



1> mqp..:

这是非常易读的,只能迭代序列一次,也许可以为您节省重复冗余Skip()/ Take()调用的相当糟糕的性能特征:

public IEnumerable> Chunkify(DataTable table, int size)
{
    List chunk = new List(size);

    foreach (var row in table.Rows)
    {
        chunk.Add(row);
        if (chunk.Count == size)
        {
            yield return chunk;
            chunk = new List(size);
        }
    }

    if(chunk.Any()) yield return chunk;
}



2> Jacob Proffi..:

对于Linq的Skip and Take方法来说,这似乎是一个理想的用例,具体取决于你想要通过分块实现的目标.这是完全未经测试的,从未在IDE代码中输入,但您的方法可能看起来像这样.

private List> ChunkifyTable(DataTable table, int chunkSize)
{
    List> chunks = new List>();
    for (int i = 0; i < table.Rows.Count / chunkSize; i++)
    {
        chunks.Add(table.Rows.Skip(i * chunkSize).Take(chunkSize).ToList());
    }

    return chunks;
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有