所以我设置了一个streamreader来读取文本文件
然后它将它读取的行保存在字符串变量中
然后我想按字母顺序将这些线打印到控制台上
我已经尝试将行添加到列表然后执行list.sort但是没有用。
这个名单只是一个名单,如丹尼尔·布朗 莎拉
约翰尼
StreamReader sr = new StreamReader(pathToTextfile);
{
string row;
String line = sr.ReadToEnd();
List<string> theList = new List<string>();
theList.Add(line);
while ((row = sr.ReadLine()) != null)
{
string[] fält = row.Split('\t');
string namn = fält[0];
int ålder = int.Parse(fält[1]);
string spelarPosition = (fält[2]);
int tröjNummer = int.Parse(fält[3]);
spelarInfo sinfo = new spelarInfo();
sinfo.namn = namn;
sinfo.ålder = ålder;
sinfo.spelarPosition = spelarPosition;
sinfo.tröjNummer = tröjNummer;
}
Console.WriteLine(theList);
它引发了我的错误。
答案 0 :(得分:3)
很简单:
var arr = File.ReadAllLines(pathToTextfile);
foreach(var item in arr.OrderBy(x => x))
{
Console.WriteLine(item);
}
注意:OrderBy
创建一个不会改变原始数组的查询。
如果您不介意修改原始数组,请使用Array.Sort
Array.Sort(arr);
答案 1 :(得分:0)
阅读每一行并对其进行排序:
String[] lines = File.ReadAllLines(path);
Array.Sort(lines);
答案 2 :(得分:0)
举一个更全面的例子。我建议你存储一个你的玩家类型列表,而不是一个字符串列表。
Player p1 = new Player() { Name = "BOOP", Age = 25 };
Player p2 = new Player() { Name = "ZOOP", Age = 21 };
Player p3 = new Player() { Name = "DOOP", Age = 25 };
Player p4 = new Player() { Name = "FOOP", Age = 28 };
List<Player> players = new List<Player>();
players.Add(p1);
players.Add(p2);
players.Add(p3);
players.Add(p4);
var sortedByName = players.OrderBy(player => player.Name);
var sortedByAge = players.OrderBy(player => player.Age);
通过这种方式,您可以更好地控制如何订购列表,并且您已经创建了某种播放器对象,因此只需存储名称即可。