Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.net中将数据表拆分为较小的大小_C#_.net_Datatable - Fatal编程技术网

C# 如何在.net中将数据表拆分为较小的大小

C# 如何在.net中将数据表拆分为较小的大小,c#,.net,datatable,C#,.net,Datatable,我有一个扩展方法,可以将数据表拆分为上面提到的大小。假设我说1000,如果我有10000个项目,它将创建10个包含1000个项目的数据表。我的项目更多,它将创建很多数据表。但是我想要的是我们所有的项目,我只需要5个数据表。如何实现它。我的代码是 var tables = dt.AsEnumerable().ToChunks(10000) .Select(rows => rows.CopyToDataTable()) public

我有一个扩展方法,可以将数据表拆分为上面提到的大小。假设我说1000,如果我有10000个项目,它将创建10个包含1000个项目的数据表。我的项目更多,它将创建很多数据表。但是我想要的是我们所有的项目,我只需要5个数据表。如何实现它。我的代码是

var tables = dt.AsEnumerable().ToChunks(10000)
                          .Select(rows => rows.CopyToDataTable())
    public static IEnumerable<IEnumerable<T>> ToChunks<T>(this IEnumerable<T> enumerable,
                                                          int chunkSize)
    {
        int itemsReturned = 0;
        var list = enumerable.ToList(); // Prevent multiple execution of IEnumerable.
        int count = list.Count;
        while (itemsReturned < count)
        {
            int currentChunkSize = Math.Min(chunkSize, count - itemsReturned);
            yield return list.GetRange(itemsReturned, currentChunkSize);
            itemsReturned += currentChunkSize;
        }
    }
var tables=dt.AsEnumerable().ToChunks(10000)
.Select(rows=>rows.CopyToDataTable())
公共静态IEnumerable ToChunks(此IEnumerable enumerable,
整数块大小)
{
int itemsreturn=0;
var list=enumerable.ToList();//防止多次执行IEnumerable。
int count=list.count;
while(itemsreturn
编辑


我有50000条记录,我想在TPL任务中处理它。在这段代码中,它将创建50个数据表和50个不好的任务。因此,我希望5个数据表每个包含10000条记录和5个任务。这不是固定的,我的意思是,如果是60000条,那么5个任务和5个表每个包含12000条记录,使用非常好的实现,您可以做到:

var array = sequence.ToArray();
var numberOfSlices = 5;
var numberOfElementsInSlice = Math.Ceil(array.Length / (double)numberOfSlices);
var sliceRanges = Enumerable.Repeat(numberOfElementsInSlice, numberOfSlices).ToArray();

var slices = array.Slice(sliceRanges);

一个数据表可以容纳16777216行,将其拆分似乎是一个糟糕的设计决策。也许你可以分享一下为什么你想把它分开,也许有人能帮你。我有50000条记录,我想在TPL任务中处理它。在这段代码中,它将创建50个数据表和50个不好的任务。所以我想要5个数据表,每个表包含10000条记录和5个任务。这不是固定的,我的意思是如果它是60000,那么5个任务和5个表,每个表有12000条记录,这是一个datatable@peter什么意思?代码中没有数据表。