以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' –