C# 对于返回IQueryable<;的方法,是否需要使用AsQueryable();类型>;在.NETEF中
我正在从事一个ASP.NET项目。为了与数据库交互,我使用实体框架和LINQ。我所知道的是,如果要执行另一个查询,那么使用C# 对于返回IQueryable<;的方法,是否需要使用AsQueryable();类型>;在.NETEF中,c#,asp.net,entity-framework,linq,C#,Asp.net,Entity Framework,Linq,我正在从事一个ASP.NET项目。为了与数据库交互,我使用实体框架和LINQ。我所知道的是,如果要执行另一个查询,那么使用IQueryable比使用IEnumerable要好。但我想知道的是,我有一个存储库和一个方法,如下所示 public IQueryable<Category> getData(){ return db.categories.AsQueryable(); } public IQueryable getData(){return db.categories.AsQ
IQueryable
比使用IEnumerable
要好。但我想知道的是,我有一个存储库和一个方法,如下所示
public IQueryable<Category> getData(){ return db.categories.AsQueryable(); }
public IQueryable getData(){return db.categories.AsQueryable();}
正如您在上面看到的,我在return语句中使用AsQueryable进行类型转换,而函数返回类型已经是IQueryable了。但我这么做是因为我不确定,如果我在控制器中调用该函数,比如
repository.getData()
如果不使用类型转换,它是否可以
IQueryable
?我可以删除AsQueryable()
类型转换吗?没有它,它会转换为IEnumerable吗?如果我删除AsQueryable
,请使用相同的性能?如果db.categories
是从(或仅仅是)IQueryable
派生出来的,那么是的,当然,您可以删除它。最简单的方法是不使用AsQueryable()
方法运行代码。然后我可以检查性能吗?在什么方面?正如Pouyrazoglu在回答中提到的,如果db.categories
是iquirable
,那么AsQuerable()
方法是多余的。