在TPH继承中,这是否有任何区别:
context.Firms.OfType<RedFirm>()
和此:
context.Firms.Where(item => item is RedFirm);
在表现方面?
答案 0 :(得分:4)
OfType<T>
会返回IEnumerable<T>
(或IQueryable<T>
等)。它在内部执行is
并将这些对象转换为仅返回T类型的对象。OfType<TResult>
还包括短路检查,如果整个IEnumerable<T>
可以转换为IEnumerable<TResult>
然后它的执行速度会明显加快,因为它不会检查集合中的每个项目。
Where
不会更改IEnumerable<T>
的返回类型,因为您必须投射它们(如果需要),OfType<T>
应该稍快一些,因为它包含此调用。< / p>