在我的 Entity Framework Code First 项目中,我有一个包含路由的存储库对象
public class EFRepository
{
...
public IQueryable<Route> Routes
{
get { return context.Routes; }
}
...
}
如果我跑
var routes = this.repository.Routes
.Where(r => r.DeployedService.IsActive.HasValue
&& r.DeployedService.IsActive.Value);
路线对象的类型IQueryable<Route>
。
但是,如果我运行
Func<Route, bool> routeIsActive = r => r.DeployedService.IsActive.HasValue
&& r.DeployedService.IsActive.Value;
var routes = this.repository.Routes.Where(routeIsActive);
在这种情况下,路由对象的类型是IEnumerable<Route>
。
我原以为他们会被评估相同,但显然我错了。这两个语句有什么区别,为什么它们返回不同的类型。