C# 如何订购列表<;字符串[]>;?

C# 如何订购列表<;字符串[]>;?,c#,csv,C#,Csv,我正在处理这个列表: List<string[]> parserData = ReadParserData(@"C:/File.csv", ','); 含义顺序为:身份证、姓名、工资 private static List<string[]> ReadParserData(string path, char delimiter) { var parserData = new List<string[]>();

我正在处理这个列表:

 List<string[]> parserData = ReadParserData(@"C:/File.csv", ',');
含义顺序为:身份证、姓名、工资

   private static List<string[]> ReadParserData(string path, char delimiter)
    {
        var parserData = new List<string[]>();
        using (var sr = new StreamReader(path))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                string[] row = line.Split(delimiter);
                parserData.Add(row);
            }
        }
        return parserData;
    }
您只需解析薪资(第三行中的第三项)并使用或方法来订购行:

parsedData.OrderBy(row => Decimal.Parse(row[2]))
但我建议您创建一些
Person
类,它将以可读的方式存储您的数据

public class Person
{
   public int Id { get; set; }
   public string Name { get; set; }
   public decimal Salary { get; set; }
}
解析

var people = from line in File.ReadLines(path)
             let parts = line.Split(delimiter)
             select new Person {
                Id = Int32.Parse(parts[0]),
                Name = parts[1],
                Salary = Decimal.Parse(parts[2])
             };
然后,您将能够通过这种方式按薪资对人员列表进行排序

people.OrderBy(p => p.Salary)
更具可读性

注意:有一种简便的方法


要保存个人数据,只需编写格式化行:

var lines = from p in people
            orderby p.Salary
            select String.Format("{0},{1},{2}", p.Id, p.Name, p.Salary);

File.WriteAllLines(@"C:/AscendingSalary.csv", lines);
您只需解析薪资(第三行中的第三项)并使用或方法来订购行:

parsedData.OrderBy(row => Decimal.Parse(row[2]))
但我建议您创建一些
Person
类,它将以可读的方式存储您的数据

public class Person
{
   public int Id { get; set; }
   public string Name { get; set; }
   public decimal Salary { get; set; }
}
解析

var people = from line in File.ReadLines(path)
             let parts = line.Split(delimiter)
             select new Person {
                Id = Int32.Parse(parts[0]),
                Name = parts[1],
                Salary = Decimal.Parse(parts[2])
             };
然后,您将能够通过这种方式按薪资对人员列表进行排序

people.OrderBy(p => p.Salary)
更具可读性

注意:有一种简便的方法


要保存个人数据,只需编写格式化行:

var lines = from p in people
            orderby p.Salary
            select String.Format("{0},{1},{2}", p.Id, p.Name, p.Salary);

File.WriteAllLines(@"C:/AscendingSalary.csv", lines);

非常感谢Sergey,你的答案非常有用,也非常容易理解,但是我如何在不使用函数拆分的情况下做到这一点?非常感谢Sergey,你的答案非常有用,也非常容易理解,但是我如何在不使用函数拆分的情况下做到这一点?