private void SurveyForm_Load(object sender, EventArgs e) { splitContainer1.Panel2Collapsed = true; Data = new FileExtensionDataCollection(StringComparer.OrdinalIgnoreCase); LoadCompressedList(); UpdateExtensionData(Data); }
private void UpdateExtensionData(FileExtensionDataCollection data) { lock (data) { //TODO: pre-aggregate more stuff to avoid all this pointless aggregation/churning in display functionality. dgv_Extensions.DataSource = data.OrderBy(a => a.CompressionStats.AvgCompressionRatio ?? 1000).Select(a => new { Extension = a.Extension, TotalFileCount = a.Files.Files.Count, TotalFileSize = a.Files.TotalFileSize.FormatFileSize(), TestedFileCount = a.CompressionStats.CompressionResults.Count, TestedFileSize = a.CompressionStats.CompressionResults.Aggregate(0L, (sum, item) => sum += item.TestedSize).FormatFileSize(), TestResultFileSize = a.CompressionStats.CompressionResults.Aggregate(0L, (sum, item) => sum += item.TestResultBytes).FormatFileSize(), AvgCompression = a.CompressionStats.AvgCompressionRatio == null ? "" : a.CompressionStats.AvgCompressionRatio.Value.ToString("0.0%"), Known = a.KnownCompressed, Description = a.Description, Category = a.Category }).ToList(); lbl_ExtensionsFoundValue.Text = data.Count.ToString(); lbl_TotalFilesFoundValue.Text = data.Aggregate(0L, (count, pile) => count + pile.Files.Files.Count).ToString(); lbl_TotalFileSizeValue.Text = data.Aggregate(0L, (size, pile) => size + pile.Files.TotalFileSize).FormatFileSize(); lbl_ExtensionsTestedValue.Text = data.Where(a => a.CompressionStats.CompressionResults.Count > 0).Count().ToString(); lbl_FilesTestedValue.Text = data.Aggregate(0, (count, pile) => count + pile.CompressionStats.CompressionResults.Count).ToString(); lbl_TestedSizeValue.Text = data.Aggregate(0L, (size, pile) => size + pile.CompressionStats.CompressionResults.Aggregate(0L, (innerSize, testedFile) => innerSize += testedFile.TestedSize)).FormatFileSize(); lbl_TestResultSizeValue.Text = data.Aggregate(0L, (size, pile) => size + pile.CompressionStats.CompressionResults.Aggregate(0L, (innerSize, testedFile) => innerSize += testedFile.TestResultBytes)).FormatFileSize(); } }