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
我的 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