我的foreach走错了路。它现在将模板从下到上设置,但这需要按相反的顺序进行
我已经添加了一个印刷屏幕以使其清晰:
我知道的唯一解决方案是逐个选择它们,然后设置正确的答案,但我将如何帮助这个?或者仍有办法让foreach
走向正确的“方向”
这是我正在使用的foreach:
var labels = this.Controls
.OfType<Label>()
.Where(l => l.Name.StartsWith("answer_"));
int x = 1;
foreach (Label l in labels)
{
int y = x * tafel;
l.Text = y.ToString();
x++;
}
答案 0 :(得分:3)
如果您确定它们始终采用完全相反的顺序,则可以随时向.Reverse()
次查询添加this.Controls.OfType<Label>...
。有点丑陋和破解恕我直言,但应该工作。
一个不那么神奇的解决方案是添加.OrderBy()
以使它们按照您希望它们出现的顺序显示。例如:
this.Controls.OfType<Label>().OrderBy(l=>l.Text)
您还可以使用.OrderByDescending()
或使用自定义OrderBy
类的Comparer<Label>
重载。