对csv文件进行排序

时间:2013-06-02 00:01:09

标签: c#

我有需要排序的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);
        }

1 个答案:

答案 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));