我想在循环每个之前过滤集合元素。
当我尝试这个时:
foreach (CheckBox checkbox in this.Controls()
.Where(c => c.GetType() == typeof (CheckBox)).Select(c => (CheckBox)c))
我收到以下错误:
"System.Windows.Forms.Controls cannot be used like a method."
我使用.NET framework 4客户端配置文件,并确保在代码中使用System.Linq
。
有什么想法吗?
答案 0 :(得分:4)
this.Controls
是属性,而不是方法,因此您应该使用它而不使用括号()
。
foreach (CheckBox checkbox in this.Controls
.Where(c => c.GetType() == typeof (CheckBox)).Select(c => (CheckBox)c))
修改:根据您的评论,这不起作用。你可以使用的是以下代码:
foreach (var control in this.Controls)
{
CheckBox myCheckbox = control as CheckBox;
if (myCheckbox == null) continue;
// your code
}
但我也更喜欢dkozi的解决方案。
答案 1 :(得分:3)
Controls
属性不是方法,您也可以使用Enumerable.OfType<TResult>
方法更轻松地执行此操作:
foreach (CheckBox checkbox in this.Controls.OfType<CheckBox>())
{
}