C# IQueryable和Queryable之间的区别

C# IQueryable和Queryable之间的区别,c#,C#,我对界面还不太了解,所以我想用一种有助于我更好理解的方式来回答这个问题 我正在学习一个教程,它让我做了一个IQueryable。为什么我不能创建一个可查询的类呢?只是一个静态类,它包含了对接口的访问。您不会在代码中直接使用Queryable,而是在IQueryable实例中调用它的方法。Queryable是一个静态类,它为实现IQueryable的任何东西提供了一些方便和有用的方法。你做不到,因为它已经做好了。您需要创建一个新的类,该类实际执行您希望它执行的操作,并实现IQueryable,以便

我对界面还不太了解,所以我想用一种有助于我更好理解的方式来回答这个问题


我正在学习一个教程,它让我做了一个IQueryable。为什么我不能创建一个可查询的类呢?

只是一个静态类,它包含了对接口的访问。您不会在代码中直接使用
Queryable
,而是在
IQueryable
实例中调用它的方法。

Queryable
是一个静态类,它为实现
IQueryable
的任何东西提供了一些方便和有用的方法。你做不到,因为它已经做好了。您需要创建一个新的类,该类实际执行您希望它执行的操作,并实现
IQueryable
,以便其他为使用
IQueryable
(包括
Queryable
)而编写的代码知道如何使用它。

接口并不意味着该类将如何编码,只意味着如何定义与该类的交互


可以查询的类可能有许多不同的实现,但只要与所有这些类的交互相同,这并不重要。

接口是定义方法和属性的契约,但接口中没有实现

类通过为接口中定义的所有内容提供实现来实现接口

由于接口没有实现,因此无法创建接口的实例。您必须创建实现接口的类的实例


但是,您可以拥有接口类型的引用,但它将指向实际对象。当你使用接口引用时,你可以使用接口中定义的所有东西,但是如果类包含更多的方法,你就无法访问它们,而不将引用转换到实际的类。

你说的“生成IQueryable”是什么意思?@Jon,我说
你不会在代码中直接使用Queryable
。对不起,我打错了,但我仍然在质疑你的说法,因为人们总是使用Queryable。或者你的意思是,由于它们是一个人使用的扩展方法,你不认为这是“直接使用”吗?