private Action<ZbTask<IEnumerable>> OnExportPageResultFactory(List<IDataObject> objects, int page, int pageSize, IQueryable unpagedQuery, string fileName)
{
return t =>
{
var result = t.Result.Cast<IDataObject>().ToList();
objects.AddRange(result);
bool queryAgain = result.Count == pageSize;
if (queryAgain)
{
CurrentBusyMessage = string.Format(InstanceListViewModelResources.ExportBusyMessageFormat, page + 1);
GetPagedQuery(page + 1, pageSize, unpagedQuery)
.OnError(ex => OnExportPageError(ex))
.OnResult(OnExportPageResultFactory(objects, page + 1, pageSize, unpagedQuery, fileName));
}
else
{
Zetbox.App.Packaging.Exporter.Export(DataContext, fileName, objects);
fileOpener.ShellExecute(Path.GetDirectoryName(fileName));
ClearBusy();
}
};
}