基本上尝试读取文件并将其从7列更改为5列并更改日期格式。应该添加我使用linqpad,语言是C#语句。
代码:
string txtFolderPath = @"D:\Testing\BM\";
string[] files = Directory.GetFiles(txtFolderPath, "cplt.csv", SearchOption.AllDirectories);
//files.Dump();
foreach (string file in files)
{
// reading in csv file
var csvData = from row in new CpltData(@file, 1000000, 1000000, "")
//@"C:\Miu\Blue Fin III - A\Blue Fin III - A\cplt.csv"
select new
{
Period = row.Period,
IndexEltId = row.IndexEltId,
EventId = row.EventId,
Date = row.Date.ToString("dd-MMM-yyyy HH.mm.ss"),
Payout = row.Payout
};
//csvData.Dump();
Util.WriteCsv(csvData, @file);
}
错误消息:InvalidCastException无法转换值' 8/22/2015 上午1:19:01'到第2行的DateTime
以下行发生错误:
var csvData =来自新CpltData中的行(@ file,1000000,1000000,"")
CpltData(string csvFilePath, int noOfPeriods, double principal, string currency)
它是从某个dll导入的,不确定如何访问它:/
答案 0 :(得分:2)
错误消息非常清楚:您正在使用完美的DateTime
变量,将其转换为字符串,然后您尝试将该字符串分配给另一个DateTime
变量。那不算。
没有"日期格式"在DateTime
变量中。
DateTime
只是在内部代表中保留一个日期,与您可能有多年,几个月等的任何概念完全无关。"日期格式"是在显示DateTime
时使用的内容。
因此,只需将row.Date
分配给Date
,即可完成此段代码。
稍后,当需要显示Date
,时,会应用"日期格式"。