Linq,在var,list,IEnumerable和IQueryable中返回数据有什么区别?

时间:2010-11-25 16:06:16

标签: linq linq-to-sql linq-to-entities linq-to-xml linq-to-objects

我是Linq的新手请指导我一些基本的事情。

阅读Linq上的一些文章。一些authers从Linq查询中填充var中的数据,一些填充自定义类型对象的列表,一些填充IEnumerable中的数据,一些填充IQuryable中的数据。我无法得到这些4中的差异,以及应该在哪种情况下使用哪一个。

我想使用Linq to SQL。我该怎么用?

1 个答案:

答案 0 :(得分:5)

好吧,你永远不能声明方法返回var - 它只对局部变量有效。它基本上意味着“编译器,请根据赋值运算符右侧的表达式推断此变量的静态类型”。

如果LINQ to Objects查询返回某种类型的序列,或者只返回IEnumerable<T>之类的单个实例,则LINQ to Objects查询将返回First()

LINQ to SQL或EF查询将使用IQueryable<T>,如果他们希望进一步的查询选项能够在现有查询的基础上构建,则添加的位将作为SQL构建过程的一部分进行分析。或者,使用IEnumerable<T>表示在客户端执行任何进一步处理。

我建议您阅读LINQ的核心概念(以及语言增强本身,如var),而不是专注于使用哪种返回类型 - 这样您就可以更好地理解< em>为什么存在这些选项,以及它们的不同用例是什么。