public override async Task <(string FileName, IEnumerable <byte> Content)> SerializeAsync() { return(await Task.Run(() => (generateFileName(), generateContent()))); string generateFileName() { var mode = Mode.ToAnglesString(); return($"{MeasureDateTime.ToString(TIME_FORMAT)} InGK TCAL raw {mode}.csv"); } IEnumerable <byte> generateContent() { var ms = new MemoryStream(); var writer = new StreamWriter(ms, Encoding.GetEncoding(CSV_ENCODING)); var rows = new Enumerable <string[]> { Columns, Rows.Select(r => r.Select(c => c.ToStringInvariant()).ToArray()) }; foreach (var row in rows) { writer.WriteLine(row.Aggregate(CSV_SEPARATOR)); } writer.Flush(); return(ms.ToArray()); } }
public override int GetHashCode() { var hashCode = -1080134904; hashCode = hashCode * -1521134295 + Mode.GetHashCode(); hashCode = hashCode * -1521134295 + MeasureDateTime.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string[]> .Default.GetHashCode(Columns); hashCode = hashCode * -1521134295 + EqualityComparer <IEnumerable <double[]> > .Default.GetHashCode(Rows); return(hashCode); }
public override async Task <(string FileName, IEnumerable <byte> Content)> SerializeAsync() { return(await Task.Run(() => (generateFileName(), generateContent()))); string generateFileName() { return($"{MeasureDateTime.ToString(TIME_FORMAT)} InGK SENS raw.csv"); } IEnumerable <byte> generateContent() { var ms = new MemoryStream(); var writer = new StreamWriter(ms, Encoding.GetEncoding(CSV_ENCODING)); var rows = new Enumerable <IEnumerable <string> > { Columns, Positions.Select((r, i) => getRows(i, r)).Flatten() }; foreach (var row in rows) { writer.WriteLine(row.Aggregate(CSV_SEPARATOR)); } writer.Flush(); return(ms.ToArray()); IEnumerable <IEnumerable <string> > getRows(int i, PositionMeasureResult position) { yield return(new string[] { "Position", (i + 1).ToStringInvariant(), position.Position.Inc.ToStringInvariant(), position.Position.Azi.ToStringInvariant(), position.Position.Gtf.ToStringInvariant() }); foreach (var measure in position.Result) { yield return(measure.Select(m => m.ToStringInvariant())); } } } }