排序对象列表不起作用

本文关键字:不起作用 列表 对象 排序 | 更新日期: 2023-09-27 18:33:48

我尝试用物种名称/地址/年龄/点等写出我的所有对象。 创建了一种称为签证的方法,该方法返回我想写出的内容。尝试将该方法与包含对象的列表一起使用,并在消息框中写出所有结果。我应该使用我的签证方法在消息框中写什么?

编辑:写出方法已修复,但现在排序不起作用。尝试了2-3种不同的组合,但不起作用。

public class Artist : MusikBidrag
{
    public string namn { get; set; }
    public int fodelseAr { get; set; }
    public string fodelseOrt { get; set; }
    public string visa()
    {
        return "Namn: " + namn + "   Födelse år: " + fodelseAr + "   Födelse ort: " + fodelseOrt + "'nBidrag: " + bidragTitel + "   Bidrag längd: " + bidragLangd + "   Poäng: " + bidragPoang + "'n'n";
    }        
}
public class MusikBidrag
{
    public string bidragTitel { get; set; }
    public double bidragLangd { get; set; }
    public int bidragPoang { get; set; }
}
public class sortOnPoints : IComparer<MusikBidrag>
{
    public int Compare(MusikBidrag a, MusikBidrag b)
    {
        if (a.bidragPoang > b.bidragPoang) return 1;
        else if (a.bidragPoang < b.bidragPoang) return -1;
        else return 0;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Melodi Festivalen'n'n");

        int count = int.Parse(Interaction.InputBox("Hur många Artister och Bidrag vill du ha?"));
        while (count != 2 && count < 2)
        {
            MessageBox.Show("Du kan inte ha mindre än 2 Artister/Bidrag");
            count = int.Parse(Interaction.InputBox("Hur många Artister och Bidrag vill du ha?"));
        }

        List<Artist> artister = new List<Artist>();
        for (int i = 0; i < count; i++)
        {
            Artist temp = new Artist();
            temp.namn = Interaction.InputBox("Skriv in Artist nr " + (i + 1));
            temp.fodelseAr = int.Parse(Interaction.InputBox("Skriv in födelse år för Artist nr " + (i + 1)));
            temp.fodelseOrt = Interaction.InputBox("Skriv in adress för Artist nr " + (i + 1));
            temp.bidragTitel = Interaction.InputBox("Skriv in bidrag titel för Artist nr " + (i + 1));
            temp.bidragLangd = double.Parse(Interaction.InputBox("Hur långt är bidraget? (t.ex. 2,44)"));
            artister.Add(temp);
        }
            MessageBox.Show("Tack! Nu är det dags att Rösta!");
            for (int i = 0; i < count; i++)
            {
                artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 1'n'nHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?'n'n" + artister[i].namn + " - " + artister[i].bidragTitel));
            }
            for (int i = 0; i < count; i++)
            {
                artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 2'n'nHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?'n'n" + artister[i].namn + " - " + artister[i].bidragTitel));
            }
            for (int i = 0; i < count; i++)
            {
                artister[i].bidragPoang += int.Parse(Interaction.InputBox("Röstning tur 3'n'nHur många poäng vill du ge för Bidrag nr " + (i + 1) + " ?'n'n" + artister[i].namn + " - " + artister[i].bidragTitel));
            }

            //sortOnPoints soa = new sortOnPoints();
            //artister.Sort(soa);
            artister.Sort((a, b) => a.bidragPoang.CompareTo(b.bidragPoang));

            string result="";
            foreach (var artist in artister)
            {
                 result = string.Join("'n", artister.Select(a => a.visa()));
            }
            MessageBox.Show(result);

        Console.ReadKey();
    }
}

排序对象列表不起作用

我没有看到一个名为 visa 的方法,但如果并且它为单个Artist实例返回了一个字符串,您可以像这样从列表中创建一个字符串:

string result = string.Join("'n",artister.Select(a => a.visa()));
MessageBox.Show(result);
foreach (var artist in artister)
     MessageBox.Show(artist.visa());

MessageBox.Show(string.Join(Environment.NewLine, artister.Select(x => x.visa())));