我需要根据项目编号升序排序和显示我的代码。这是示例代码。
string data = $"{itemNumber}|{itemName}|{itemPrice}";
using (StreamWriter writer = File.AppendText("items.txt"))
{
writer.WriteLine(data);
}
public void DisplayItemList()
{
using (StreamReader reader = new StreamReader("items.txt"))
{
Console.WriteLine("\n ---------------------------------");
Console.WriteLine(" Item No. Item Name Price");
Console.WriteLine(" ---------------------------------");
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] fields = line.Split('|');
Console.WriteLine(String.Format(" {0,-13}{1,-16}{2,0}", fields[0], fields[1], fields[2]));
}
Console.Write("\n");
}
}
这是我的示例代码。如你所见,我有
1 - oslopaper | 34 - bond | 11 - art
我需要它成为
1 - oslopaper, 11 - art, lastly, 34 - bond
因为我希望它按升序排列。
我建议在Linq的帮助下查询文件(在这里你可以添加排序 -
OrderBy
;代表 - Select
,标题 - Prepend
):
using System.Linq;
using System.IO;
...
public void DisplayItemList() {
var result = File
.ReadLines("items.txt")
.Where(line => !string.IsNullOrWhiteSpace(line)) // to be on the safer side
.Select(line => line.Split('|'))
.OrderBy(fields => int.Parse(fields[0]))
.Select(fields => $" {fields[0],-13}{fields[1],-16}{fields[2],0}")
.Prepend(" --------------------------------- ")
.Prepend(" Item No. Item Name Price ")
.Prepend(" --------------------------------- ");
Console.Write(string.Join(Environment.NewLine, result));
}
您可以在使用 LINQ 显示之前对项目进行排序
var lines = File.ReadAllLines("items.txt")
.OrderBy(line => int.Parse(line.Split('|')[0]));