foreach 从下往上填充

foreach fills from bottom to top

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

我添加了一个打印屏幕来说明:

我知道的唯一解决办法是 select 按名称将它们 1 对 1,然后设置正确的答案,但我将如何帮助这个?或者还有办法让foreach向右"direction"

这是我正在使用的 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++;
}

如果您确定它们的顺序始终完全相反,您可以随时将 .Reverse() 添加到您的 this.Controls.OfType<Label>... 查询中。有点难看,恕我直言,但应该可以。

一个不那么笨拙的解决方案是添加一个 .OrderBy() 让它们按照您希望它们出现的顺序出现。例如:

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

您还可以使用 .OrderByDescending() 或使用带有自定义 Comparer<Label> class.

的重载 OrderBy