什么是LINQ查询的返回类型?

时间:2011-06-07 08:34:32

标签: c# linq

IEnumerable<T>吗?据我所知,引用总是指向一个类实例。 LINQ查询真正指向的实例类型是什么?

5 个答案:

答案 0 :(得分:16)

您可以在.GetType()变量上调用IEnumerable<T> 并检查调试器中的类型来找到它。

对于不同的LINQ提供程序甚至不同的LINQ方法,这些类型可能会也可能不会有所不同。

对您的代码而言,重要的是它们都实现了您应该使用的IEnumerable<T>,或IQueryable<T>也接受表达式,这意味着您的谓词和预测将成为语法树,并且可以在运行时由LINQ提供者操纵,例如被翻译成SQL。

实际类,如果这是你要问的,甚至可能是编译器生成的,例如yield return表达式被翻译成这样一个类 无论哪种方式,它们通常是内部的,你永远不应该永远依赖它们

答案 1 :(得分:10)

根据您的原始数据源,它是IEnumerable或IQueryable:

Linq数据库查询的结果通常为IQueryable<T>,它源自IEnumerable&lt; T&gt;,IQueryable和IEnumerable。

如果您的数据库查询包含OrderBy子句,则类型为IOrderedQueryable<T>,派生自IQueryable&lt; T&gt;

如果您的数据源是IEnumerable,则结果类型为IEnumerable<T>

答案 2 :(得分:3)

我不知道,但我猜这是一种内部类型。你不必考虑这门课。

实际上,根据具体的查询,它可能是不同的类。编译器可以根据条件/处理将LINQ表达式转换为一个或另一个实现。

答案 3 :(得分:0)

如果我没有记错,IEnumerable< T >,其中T取决于您的查询

答案 4 :(得分:0)

您可以检查here三部分查询操作。您可以看到LINQ查询的返回类型是IEnumerable&lt; int&gt;。