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,你的答案非常有用,也非常容易理解,但是我如何在不使用函数拆分的情况下做到这一点?