C# 对于返回IQueryable<;的方法,是否需要使用AsQueryable();类型>;在.NETEF中

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

我正在从事一个ASP.NET项目。为了与数据库交互,我使用实体框架和LINQ。我所知道的是,如果要执行另一个查询,那么使用
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()
方法是多余的。