以rulesObjs
批量调用Execute
方法的好方法是什么?假设列表中有超过10,000个对象,并且我想一次调用Execute
,每次不超过500个对象。拆分对象数组,然后分批处理
public static List<object> ExecutePolicy()
{
Policy policy = new Policy();
List<object> rules = GetRules();
object[] rulesObjs = rules.ToArray();
// Call this method with array of object, but in batches.
policy.Execute(rulesObjs);
return rulesObjs.ToList();
}
private static List<object> GetRules()
{
// get the rules via some process
return new List<object>();
}
}
public sealed class Policy
{
public void Execute(params object[] rules)
{
// Process rules...
}
}
我对Execute()
方法没有控制权。
我认为你可以使用morelinq的[批量](http://code.google.com/p/morelinq/source /browse/MoreLinq/Batch.cs?r=f85495b139a19bce7df2be98ad88754ba8932a28)。 –
如果'GetRules'返回一个'IEnumerable'而不是一个列表,L.B的建议将会更加有用,并且流式传输它的结果而不是急切地评估整个事情。 – Servy
@Servy我说它不是性能明智的,只是为了更简洁的代码。它并不比在循环中为'Skip's和'Take'调用'GetEnumerator' –