带有c#条件的foreach循环

Ovi*_*Ovi 1 c# foreach conditional-statements

我在c#中有这个foreach循环,因为我是c#的新手,我想知道这是否可以写得更短(条件是循环的一部分)

foreach (PagerPageFilterInformation filter in PageFilterInformation)
{
    if (filter.Ancestor == myParent)
    {
        DoSomething()...//Using filter
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过做:

PagerPageFilterInformation filter = PageFilterInformation.FirstOrDefault(filter => filter.Ancestor == myParent);
if(filter != null)
{
DoSomething()...}
Run Code Online (Sandbox Code Playgroud)

但它没有用.可能是因为班级:

PagerPageFilterInformation
Run Code Online (Sandbox Code Playgroud)

继承自类:

PageFilterInformation
Run Code Online (Sandbox Code Playgroud)

sll*_*sll 5

如果DoSomething()方法不使用找到的过滤器:

if (PageFilterInformation.Any(filter => filter.Ancestor == myParent))
{
   DoSomethng();
}
Run Code Online (Sandbox Code Playgroud)

编辑:更新,因为评论中提供了新的要求

如果需要将找到的过滤器传递给DoSomething()方法:

var filter = PageFilterInformation.FirstOrDefault(f => f.Ancestor == myParent);
if (filter != null)
{
   DoSomething(filter);
}
Run Code Online (Sandbox Code Playgroud)