Rob*_*ous 3 c# linq performance linq-to-entities entity-framework
在TPH继承中,这有什么区别:
context.Firms.OfType<RedFirm>()
Run Code Online (Sandbox Code Playgroud)
和这个:
context.Firms.Where(item => item is RedFirm);
Run Code Online (Sandbox Code Playgroud)
在性能方面?
OfType<T>返回一个IEnumerable<T>(或 anIQueryable<T>等)。它在内部执行 anis并将这些对象强制转换为仅返回 T 类型的对象。OfType<TResult>还包括短路检查,如果整个IEnumerable<T>可强制转换为,IEnumerable<TResult>那么它的执行速度将明显加快,因为它不会检查集合中的每个单独项目。
Where不会更改 的返回类型IEnumerable<T>,并且由于您必须强制转换它们(如果需要),OfType<T>应该稍微快一点,因为它包含此调用。