Я хочу сохранить список с заголовками в файл csv, а затем прочитать его обратно.
Но мне нужно DateTimes, чтобы показывать миллисекунды плюс.
Я могу написать это нормально, изменив культуру. Но при чтении я получаю сообщение об ошибке заголовка.
private class TradeData
{
public string Symbol { get; set; }
public DateTime utcDT { get; set; }
public int SignedAmount { get; set; }
public double MidPrice { get; set; }
public double BidPrice { get; set; }
public double AskPrice { get; set; }
}
private static List<TradeData> Trades = new List<TradeData>();
public static void WriteIt()
{
using (var writer = new StreamWriter(Path.Combine(jobDirectoryPath, runName, "TickTraderSim7.csv")))
using (var csv = new CsvWriter(writer))
{
var myCI = CultureInfo.GetCultureInfo("en-US");
CultureInfo myCIclone = (CultureInfo)myCI.Clone();
myCIclone.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
myCIclone.DateTimeFormat.LongTimePattern = "HH:mm:ss.ffffff";
csv.Configuration.CultureInfo = myCIclone;
csv.WriteRecords(Trades);
}
}
public static void ReadIt()
{
using (var reader = new StreamReader(Path.Combine(jobDirectoryPath, runName, "TickTraderSim7.csv")))
using (var csv = new CsvReader(reader))
{
var myCI = CultureInfo.GetCultureInfo("en-US");
CultureInfo myCIclone = (CultureInfo)myCI.Clone();
myCIclone.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
myCIclone.DateTimeFormat.LongTimePattern = "HH:mm:ss.ffffff";
csv.Configuration.CultureInfo = myCIclone;
var x = csv.GetRecords<TradeData>();
Trades = x.Select(f => (TradeData)f).ToList();
}
}