【发布时间】:2020-02-28 04:04:58
【问题描述】:
我如何使用这种拆分列表的方法
private List<List<T>> SplitPartition<T>(this IEnumerable<T> collection, int size)
{
var chunks = new List<List<T>>();
var count = 0;
var temp = new List<T>();
foreach (var element in collection)
{
if (count++ == size)
{
chunks.Add(temp);
temp = new List<T>();
count = 1;
}
temp.Add(element);
}
chunks.Add(temp);
return chunks;
}
我想在我现有的代码中实现这个列表分区:
public void ExportToCsv()
{
List<GenerateModel> members = getDataTop5000(); // I got data from my List of Data with return List<>
int offset = 0;
const int numberPerBatch = 500000; // count parameter.
double LoopMax = Math.Ceiling(members.Count / (double)numberPerBatch);
var PartitionMembers = members.SplitPartition(numberPerBatch); //error here
while (offset < LoopMax)
{
//do the index of partion here PartitionMembers
offset++;
}
}
任何建议或示例如何使用这些方法?这真的是我需要分区到我的列表。当我尝试使用该方法时,出现如下错误:
List' 不包含“SplitPartition”的定义,并且找不到接受“List”类型的第一个参数的可访问扩展方法“SplitPartition”(您是否缺少 using 指令或程序集引用?)
【问题讨论】:
-
哎呀,这可能会很糟糕。此外,切勿在不包含确切错误消息的情况下在 SO 上发帖说“我遇到错误”
-
@CaiusJard 抱歉,我将添加我的错误消息,我将编辑我的问题
-
Numberperbatch 应声明为 int。发布您的错误消息。
-
嗨,extension method (
SplitPartition) 是private。您在哪里尝试调用它?是同一个班吗? -
@CaiusJard:你为什么说表演会很“糟糕”?虽然您可以通过设置其中一些列表的
Capacity来轻松提升性能,但它仍然是 O(n)。
标签: c# arraylist ienumerable