如何使用c#按字母顺序对文本文件进行排序

时间:2014-04-13 19:04:43

标签: c# sorting

它会在文本文件中打印从姓氏到第一个名字的所有名称,但我仍然试图按姓氏的字母顺序打印

这是我到目前为止的代码:

namespace cse1302_Lecture18_FileIO_Prez
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader("NameInput.txt");  //if file in bin/debug

            char[] delims = {','};

            //string[] names = {"",""};

            while(!sr.EndOfStream)
            {
                string data_line = sr.ReadLine();
                //names = data_line.Split(delims);
                Console.WriteLine(data_line);

            }
            sr.Close();
        }
    }

}

3 个答案:

答案 0 :(得分:1)

尝试使用LINQ。我假设你的文件包含每行用逗号分隔的两个字段,其中第一个是First Name,第二个是Surname。

var lines = System.IO.File.ReadLines("NameInput.txt");
var linesOrderedBySurname = lines.OrderBy((p) => p.Split(',')[1]).ToList();

答案 1 :(得分:0)

首先将名称存储到list,然后根据last name对其进行排序,如:

var names = new List<string>();
while(!sr.EndOfStream)
{
   names.Add(sr.ReadLine());
}

names.Sort((x, y) => x.Split(',')[1].CompareTo(y.Split(',')[1]));

然后只在控制台中显示列表项。

foreach(var name in names)
    Console.WriteLine(name);

这假定姓氏在名字后面,并且用逗号分隔。

答案 2 :(得分:0)

尝试使用File.ReadAllLines代替StreamReader,您需要加载文件的所有行,然后使用LINQ对其进行排序

 static void Main(string[] args)
            {
                var lastNames = File.ReadAllLines("yourtxtfile.txt").OrderBy(line => line.Split(',')[1]);    
            }