我有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)
有更短的方式吗?谢谢
使用Enumerable.OfType<TResult>扩展方法过滤/强制转换.
list.OfType<B>().Single(b => b.PropertyThatOnlyExistOnB == "something")
Run Code Online (Sandbox Code Playgroud)