它会在文本文件中打印从姓氏到第一个名字的所有名称,但我仍然试图按姓氏的字母顺序打印
这是我到目前为止的代码:
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();
}
}
}
答案 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]);
}