foreach从下到上填充

时间:2015-04-26 14:38:03

标签: c# winforms search controls

我的foreach走错了路。它现在将模板从下到上设置,但这需要按相反的顺序进行

我已经添加了一个印刷屏幕以使其清晰:

Wrong order

我知道的唯一解决方案是逐个选择它们,然后设置正确的答案,但我将如何帮助这个?或者仍有办法让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++;
}

1 个答案:

答案 0 :(得分:3)

如果您确定它们始终采用完全相反的顺序,则可以随时向.Reverse()次查询添加this.Controls.OfType<Label>...。有点丑陋和破解恕我直言,但应该工作。

一个不那么神奇的解决方案是添加.OrderBy()以使它们按照您希望它们出现的顺序显示。例如:

this.Controls.OfType<Label>().OrderBy(l=>l.Text)

您还可以使用.OrderByDescending()或使用自定义OrderBy类的Comparer<Label>重载。