public void RemoveResults(DateTime? removeBefore) { if (removeBefore.HasValue) _out.WriteLine(Resources.CommandLine_RemoveResults_Removing_results_before_ + removeBefore.Value.ToShortDateString() + "..."); // Not L10N else _out.WriteLine(Resources.CommandLine_RemoveResults_Removing_all_results); var filteredChroms = new List<ChromatogramSet>(); if (_doc.Settings.MeasuredResults == null) { // No imported results in the document. return; } foreach (var chromSet in _doc.Settings.MeasuredResults.Chromatograms) { var listFileInfosRemaining = new ChromFileInfo[0]; if (removeBefore.HasValue) { listFileInfosRemaining = chromSet.MSDataFileInfos.Where(fileInfo => fileInfo.RunStartTime == null || fileInfo.RunStartTime >= removeBefore).ToArray(); } if (ArrayUtil.ReferencesEqual(listFileInfosRemaining, chromSet.MSDataFileInfos)) filteredChroms.Add(chromSet); else { foreach (var fileInfo in chromSet.MSDataFileInfos.Except(listFileInfosRemaining)) _out.WriteLine(Resources.CommandLine_RemoveResults_Removed__0__, fileInfo.FilePath); if (listFileInfosRemaining.Any()) filteredChroms.Add(chromSet.ChangeMSDataFileInfos(listFileInfosRemaining)); } } if (!ArrayUtil.ReferencesEqual(filteredChroms, _doc.Settings.MeasuredResults.Chromatograms)) { MeasuredResults newMeasuredResults = filteredChroms.Any() ? _doc.Settings.MeasuredResults.ChangeChromatograms(filteredChroms) : null; _doc = _doc.ChangeMeasuredResults(newMeasuredResults); } }