排序对象列表不起作用
本文关键字:不起作用 列表 对象 排序 | 更新日期: 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())));