private Action<ZbTask<IEnumerable>> OnExportPageResultFactory(StreamWriter sw, List<ColumnDisplayModel> cols, int page, int pageSize, IQueryable unpagedQuery, string tmpFile)
{
return t =>
{
bool queryAgain = ExportPage(sw, cols, t.Result.Cast<IDataObject>()) == pageSize;
if (queryAgain)
{
CurrentBusyMessage = string.Format(InstanceListViewModelResources.ExportBusyMessageFormat, page + 1);
GetPagedQuery(page + 1, pageSize, unpagedQuery)
.OnError(ex => OnExportPageError(sw, ex))
.OnResult(OnExportPageResultFactory(sw, cols, page + 1, pageSize, unpagedQuery, tmpFile));
}
else
{
sw.Dispose();
fileOpener.ShellExecute(tmpFile);
ClearBusy();
}
};
}