public void Export()
{
SetBusy(string.Format(InstanceListViewModelResources.ExportBusyMessageFormat, 1));
var tmpFile = tmpService.CreateWithExtension("_Export.csv"); // Excel can't open two files with the same name, located in another folder!
StreamWriter sw;
// http://stackoverflow.com/questions/545666/how-to-translate-ms-windows-os-version-numbers-into-product-names-in-net
if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major <= 5) // assuming Windox XP or lower
sw = new StreamWriter(tmpFile, false, Encoding.Default);
else
sw = new StreamWriter(tmpFile, false, Encoding.UTF8); // use this constructor to ensure BOM
var cols = DisplayedColumns.Columns
.Where(i => i.Type != ColumnDisplayModel.ColumnType.MethodModel)
.ToList();
// Header
sw.WriteLine(string.Join(";",
cols.Select(i => i.Header).ToArray()));
var unpagedQuery = GetUnpagedQuery();
GetPagedQuery(0, Helper.MAXLISTCOUNT, unpagedQuery)
.OnError(ex => OnExportPageError(sw, ex))
.OnResult(OnExportPageResultFactory(sw, cols, 0, Helper.MAXLISTCOUNT, unpagedQuery, tmpFile));
}