【问题标题】:Linq, what is difference in returning data in var, list, IEnumerable and IQueryable?Linq,在var,list,IEnumerable和IQueryable中返回数据有什么区别?
【发布时间】:2010-11-25 16:06:16
【问题描述】:

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

在阅读一些关于 Linq 的文章。一些作者在 var 中填充来自 Linq 查询的数据,一些填充自定义类型对象的列表,一些在 IEnumerable 中填充数据,有些在 IQuryable 中填充。我不知道这 4 种有什么区别,在哪种情况下应该使用哪一种。

我想使用 Linq to SQL。我应该使用什么?

【问题讨论】:

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


【解决方案1】:

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

如果 LINQ to Objects 查询返回某种序列,通常会返回 IEnumerable<T>,或者对于 First() 等仅返回单个实例。

LINQ to SQL 或 EF 查询将使用IQueryable<T>,如果他们希望能够在现有查询的基础上构建更多查询选项,并且在 SQL 构建过程中分析添加的位。或者,使用IEnumerable<T> 意味着任何进一步的处理都在客户端进行。

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

【讨论】:

  • 谢谢乔恩,你能给我推荐一些关于 Linq 核心概念的阅读或观看内容吗?
  • 嗯,有各种特定于 LINQ 的书籍(LINQ in Action、Pro LINQ 等)。我自己的书(C# in Depth)详细介绍了语言变化以及一些关于 LINQ to SQL 之类的工作原理的背景知识,但它并没有真正深入地介绍 LINQ to SQL 等。
  • 作业“使用 IEnumerable 意味着任何进一步的处理都在客户端执行”。你的意思是在服务器端,而不是在数据库端,对吧?
  • @haansi:我的意思是在 .NET 中。就数据库关系而言,它是客户端。
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2018-12-07
相关资源
最近更新 更多