0

我有需要排序的 csv 文件。该文件如下所示:

身份证 姓名 姓 年龄 工资
 1 约翰·阿斯本 33 1000
 2亚当·斯密22 1200
 3 阿曼达 J 22 2000
 4乔治·维利斯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);
        }
4

1 回答 1

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));
于 2013-06-02T00:05:25.663 回答