C# 如何将按年份排序的内容写入文本文件

C# 如何将按年份排序的内容写入文本文件,c#,C#,我无法按诺贝尔[I]年订购我的txt文件。 文件正在减少。我必须在成长中做些什么。 我根本不是天才,所以请尽量简单 非常感谢 struct datas { public int year; public string type; public string firstname; public string lastname; } datas[]nobel=新数据[923]; 使用(var sw=new StreamWriter(“orvosi.txt”)) {

我无法按诺贝尔[I]年订购我的txt文件。 文件正在减少。我必须在成长中做些什么。 我根本不是天才,所以请尽量简单

非常感谢

struct datas
{
    public int year;
    public string type;
    public string firstname;
    public string lastname;
}
datas[]nobel=新数据[923];
使用(var sw=new StreamWriter(“orvosi.txt”))
{
for(int i=0;i
在使用
语句之前,请将以下内容:

nobel = nobel.OrderBy(x => x.year).ToArray();

根据以后是否需要排序数组,还可以将其简化为以下内容。还要注意字符串插值
$
(),它简化了输出字符串的构造

for (datas n in nobel.OrderBy(x=> x.year)) {
    if (n.type == "orvosi")
        sw.WriteLine($"{n.year}:{n.firstname} {n.lastname}");
}
使用类和一些扩展方法(、和),可以将代码缩短为一条语句

  • 我们可以使用,它将
    IEnumerable
    的内容写入一个文件(每个项目都在它自己的行上)

  • 我们可以首先使用
    where()
    子句将数据过滤到那些
    type==“orvosi”
    的位置

  • 然后,我们可以使用
    OrderBy(data=>data.year)
    year
    属性对过滤后的项目进行排序

  • 最后,对于过滤有序集中的每个项目,我们可以
    选择一个字符串(使用),其中包含要写入文件的属性

例如:

File.WriteAllLines("orvosi.txt", nobel
    .Where(data => data.type == "orvosi")
    .OrderBy(data => data.year)
    .Select(data => $"{data.year}: {data.firstname} {data.lastname}"));

请注意,他必须使用System.Linq在代码顶部添加
。成功!谢谢你的帮助!成功谢谢你的帮助!表示感谢的最好方式是将帮助你的答案标记为接受。如果你不知道怎么做,这可能有助于成功!谢谢你的帮助!成功谢谢你的帮助!
File.WriteAllLines("orvosi.txt", nobel
    .Where(data => data.type == "orvosi")
    .OrderBy(data => data.year)
    .Select(data => $"{data.year}: {data.firstname} {data.lastname}"));