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

haa*_*nsi 1 linq linq-to-objects linq-to-entities linq-to-xml linq-to-sql

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

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

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

Jon*_*eet 5

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

通常LINQ to Objects查询将返回一个IEnumerable<T>if它返回某种类型的序列,或者仅返回一个类似的实例First().

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

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