在foreach中使用lambda函数而不是控件

时间:2017-11-08 12:38:58

标签: c# .net winforms linq lambda

我想翻译一下:

SELECT Asset,
  REGEXP_SUBSTR(Asset, '(.+):.+@',1,1,'i',1) Instancename ,
  REGEXP_SUBSTR(Asset, '.+@(.+)s-',1,1,'i',1) Servername
FROM yourtable;

进入:

foreach(Control c in Controls)
{
    if(c is TextBox)
    {
        // ...
    }
}

如何使用lambda函数专门完成?

3 个答案:

答案 0 :(得分:9)

使用OfType

foreach (TextBox c in Controls.OfType<TextBox>())
{

}
  

它根据指定的类型过滤IEnumerable的元素。

另外,请不要忘记首先在using指令中添加LINQ

using System.Linq;

答案 1 :(得分:3)

参考Linq:

using System.Linq;

并使用此:

foreach (var control in Controls.Cast<Control>().Where(c => c is TextBox))
{
    // ...
}

答案 2 :(得分:0)

你正在寻找这样的东西:

NULL

OfType根据指定的类型过滤IEnumerable的元素。