IEnumerable <T>.单独和铸造

And*_*huk 1 c# c#-4.0

我有2个对象A和B. B继承自A并具有更多属性.我有IEnumerable {A}只包含B对象.我想做的是:

list.Single(b => b.PropertyThatOnlyExistOnB == "something")
Run Code Online (Sandbox Code Playgroud)

我希望这样的事情能够发挥作用:

list.Single((B) b => b.PropertyThatOnlyExistOnB == "something")
Run Code Online (Sandbox Code Playgroud)

但它没有编译.现在我只是这样做:

B result = null;
foreach (b in list)
{
     if((B)b.PropertyThatOnlyExistOnB == "something")
     {
      result = (B)b;
     }
}
Run Code Online (Sandbox Code Playgroud)

有更短的方式吗?谢谢

Jul*_*lia 9

使用Enumerable.OfType<TResult>扩展方法过滤/强制转换.

list.OfType<B>().Single(b => b.PropertyThatOnlyExistOnB == "something")
Run Code Online (Sandbox Code Playgroud)