我有需要排序的e csv文件。该文件看起来像:
ID Name Surname Age Salary 1 John Asben 33 1000 2 Adam Smith 22 1200 3 Amanda J 22 2000 4 George Villis 36 2300
我的代码从csv文件读取数据对它们进行排序并写入另一个csv文件,但是当它在排序后读取和写入数据时,它只写入数据而不是标题。是否有任何解决方案只读取数据而不是标题,并将带有标题(ID Name Surnae Age Salary)的已排序数据写入另一个文件。
科尔看起来像
private void buttonAlterSave_Click(object sender, EventArgs e)
{
var sorted =
File.ReadLines(@"C:\Users\data.csv")
.Select(line => new
{
SortKey = Int32.Parse(line.Split(',')[3]),
Line = line
})
.OrderBy(x => x.SortKey)
.Select(x => x.Line);
File.WriteAllLines(@"C:\Users\sorteddata.csv", sorted);
}
答案 0 :(得分:4)
使用Skip
删除标题行以进行排序。使用Take
+ Concat
将标题和已排序的数据重新组合在一起。
string[] lines = File.ReadAllLines(path);
var data = lines.Skip(1);
var sorted = data.Select(line => new
{
SortKey = Int32.Parse(line.Split(',')[3]),
Line = line
})
.OrderBy(x => x.SortKey)
.Select(x => x.Line);
File.WriteAllLines(@"C:\Users\sorteddata.csv", lines.Take(1).Concat(sorted));