我有以下代码在Messagebox中显示我的结果,但它显示每次只有一个ifi想要查看下一个,我必须在消息框上单击“确定”以查看下一个。我希望同时看到所有结果。你可以评论你的想法吗?
foreach (var resultwithindexss in resultss.Select((rr, iindex) => new { result2 = rr, Index = iindex }).OrderByDescending(rr => rr.result2).Take(number))
{
MessageBox.Show(string.Format("{0}: {1}", resultwithindexss.Index, resultwithindexss.result2));
}
PS:我尝试了以下代码,但没有显示结果。
System.Console.WriteLine(string.Format("{0}: {1}", resultwithindexss.Index, resultwithindexss.result2));
提前致谢
答案 0 :(得分:2)
使用StringBuilder
构建“大”消息,然后显示
var sb = new StringBuilder();
foreach (var resultwithindexss in resultss
.Select((rr, iindex) => new { result2 = rr, Index = iindex })
.OrderByDescending(rr => rr.result2)
.Take(number))
{
sb.AppendFormat("{0}: {1}", resultwithindexss.Index, resultwithindexss.result2));
sb.AppendLine();
}
MessageBox.Show(sb.ToString());
答案 1 :(得分:0)
这是因为您正在提取每个结果并立即显示它而不是将其添加到字符串中并在循环之后显示它。
这应该可以解决问题(尚未测试过):
var sb = new StringBuilder("");
foreach (var resultwithindexss in resultss.Select((rr, iindex) => new { result2 = rr, Index = iindex }).OrderByDescending(rr => rr.result2).Take(number))
{
sb.AppendFormat(string.Format("{0}: {1}\r\n", resultwithindexss.Index, resultwithindexss.result2));
}
MessageBox.Show(sb.ToString());