我如何将以下倍数转换foreach
为 LINQ?
foreach (var resourceOne in resourceList)
{
string s = (string)resourceOne;
foreach (Control c in gridBtn.Children)
{
if (c.GetType() == typeof(ToggleButton))
{
int TagPlusOne = Convert.ToInt32(c.Tag) + 1;
string PaddedResult = TagPlusOne.ToString().PadLeft(3, '0');
if (PaddedResult == s)
{
((ToggleButton)c).BorderBrush = Brushes.Red;
((ToggleButton)c).BorderThickness = new Thickness(3, 3, 3, 3);
}
}
}
}
最后,您需要一个foreach
或类似的来设置按钮上的属性,因为 LINQ 用于查询您的数据(通常没有副作用),而不是改变它们。但是,您可以使用 LINQ 来简化查找要编辑的按钮的过程。例如,您的代码可以归结为:
var targetButtons = gridBtn
.Children
.OfType<ToggleButton>()
.Where(tb => resourceList.OfType<string>().Contains($"{Convert.ToInt32(tb.Tag) + 1}:D3"));
foreach(var btn in targetButtons)
{
btn.BorderBrush = Brushes.Red;
btn.BorderThickness = new Thickness(3, 3, 3, 3);
}
可以进一步调整/优化/重构。注意我已经PadLeft(3, '0')
用D3
标准数字格式字符串替换了它,它做同样的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句