public void SaveReportEntry(ReportEntry reportEntry) { var reportEntryString = $"\"{reportEntry.GroupedBy}\"{CsvSeparator}\"{reportEntry.ThenGroupedBy}\"{CsvSeparator}\"{Enumerable.Sum<KeyValuePair<DateTime, float>>(reportEntry.NrOfHoursPerDay, x => x.Value)}\"{CsvSeparator}{string.Join(CsvSeparator.ToString(), Enumerable.Select<KeyValuePair<DateTime, float>, string>(reportEntry.NrOfHoursPerDay, hoursForDay => $"\"{GetHoursForDayString(hoursForDay)}\""))}"; var reportEntryColumnCount = reportEntryString.Split(CsvSeparator).Length; if (reportEntryColumnCount != _reportColumnCount) { throw new ArgumentException($"Report entry column count {reportEntryColumnCount} does not match intended report column count {_reportColumnCount}", nameof(reportEntry)); } File.AppendAllLines( FullFilePath, new[] { reportEntryString }); }
protected bool Equals(ReportEntry other) { return(string.Equals(GroupedBy, other.GroupedBy) && string.Equals(ThenGroupedBy, other.ThenGroupedBy) && NrOfHoursPerDay.SequenceEqual(other.NrOfHoursPerDay) && PeriodNrOfDays == other.PeriodNrOfDays); }