如何正确排序文本文件中的字符串?

时间:2017-03-14 13:39:19

标签: c# sorting io console-application streamreader

所以我设置了一个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);
它引发了我的错误。 enter image description here
我该怎么做呢?

3 个答案:

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

通过这种方式,您可以更好地控制如何订购列表,并且您已经创建了某种播放器对象,因此只需存储名称即可。