在TPH继承中,这之间没有任何区别:
context.Firms.OfType<RedFirm>()
和这个:
context.Firms.Where(item => item is RedFirm);
在性能方面?
OfType<T>
返回IEnumerable<T>
(或IQueryable<T>
,等等)。它在内部做的is
,并投下这些对象只返回那些T类型OfType<TResult>
还包括短路检查,如果整个IEnumerable<T>
是可浇注到IEnumerable<TResult>
那么它将显著更快地执行,因为它不会在集合中检查各个项目。
Where
不会更改的返回类型IEnumerable<T>
,并且由于您必须转换它们(如果需要),因此OfType<T>
应稍快一些,因为它包含此调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句