我正在写一个应用程序,它将数据从csv整理到txt。从csv到txt的数据排序
我已经witten,但我不能得到所需的输出。
有人可以请帮忙,我不明白我错了。
我最初认为它的File.WriteAllLines是问题,但即使在写入控制台时,我也会得到相同的结果。
我的文件看起来像这样
乔治娜,辛克莱,408999703657,查询,第一国民银行,弗威斯,275.00,12/01/2012 扎卡里,白石,409122372301,查询,ABSA,艾琳, 70.25,12/01/2012 Toby,Henderson,401255489873,支票,第一国家银行,Edenvale,181.03,12/13/2012 Katherine,Cooke,409155874935,节省,ABSA,Southdowns,975.89,01/01/2013 Bradley,James,409254998,节省,ABSA,Melville,207.74,12/09/2012 Sophie,Lane,409771987,节省,ABSA,Roodepoort,207.74,12/31/2012
我的输出应该是这样的
First National B0020000045603
GSinclair 408999703657 CH Fourways 002750001122012
THenderson 401255489873 CH Edenvale 001810313122012
ABSA 0040000146162
ZWhitehead 409122372301 CH Irene 000702501122012
KCooke 409155874935 SAVSouthdowns009758901012013
BJames 409254998 SAVMelville 002077409122012
SLane 409771987 SAVRoodepoort002077431122012
我目前拥有的代码只返回头和2线,如下所示。
ABSA 0040000146162
KCooke 409155874935 SAVSouthdowns 009758901012013
请协助。
我的代码如下
string text = @"C:\\Test\\output.txt";
var inputEntries = File.ReadLines(@"C:\\Test\\debitorders.csv").Select(line =>
{
var values = line.Split(',');
return new
{
accountholder = values[0].Trim().Substring(0, 1) + values[1].Trim(),
accountnumber = long.Parse(values[2].Trim()),
accounttype = values[3].Trim(),
bankname = values[4].Trim(),
branch = values[5].Trim(),
amount = 100 * double.Parse(values[6].Trim()),
date = DateTime.Parse(values[7].Trim())
};
});
var banks = inputEntries
.OrderBy(e => e.bankname)
.GroupBy(e => e.bankname, e => e);
foreach (var bank in banks)
{
var AccountName = bank.Key;
if (AccountName.Length >= 20)
{
AccountName = AccountName.Substring(0, 16);
}
else
{
AccountName += new string(' ', 20 - AccountName.Length);
}
var NumberOfAccounts = bank.Count();
var TotalAmount = bank.Select(acc => acc.amount).Sum();
var Header = AccountName + "\t" + NumberOfAccounts.ToString("000") + TotalAmount.ToString("0000000000");
var sortedAccounts = bank
.OrderBy(acc => acc.accountholder)
.OrderByDescending(acc => acc.amount);
foreach (var account in sortedAccounts)
{
var outputLine =
account.accountholder + "\t" +
account.accountnumber + "\t" +
//get first 2 characters
account.accounttype.Substring(0, 3).ToUpper() + account.branch + "\t" + "00" +
account.amount +
account.date.ToString("ddMMyyyy");
for (int i = 0; i < 15; i++)
{
File.WriteAllText(text, Header + Environment.NewLine + outputLine);
Console.WriteLine(Header + outputLine);
Console.ReadLine();
}
}
}
你在控制台上写了什么错误? –
@ M.Schena我刚刚编辑了我的问题,我的意思是我只得到两行代码,而不是所有行的输出 –
您的代码给我的合成代码 –