Linq,var、list、IEnumerable 和 IQueryable 返回数据有什么区别?
我是 Linq 新手,请指导我一些基本的事情。
阅读一些有关 Linq 的文章。有些作者从 Linq 查询中将数据填充到 var 中,有些作者填充自定义类型对象列表,有些作者在 IEnumerable 中填充数据,有些则在 IQuryable 中填充数据。我不明白这 4 个有什么区别,以及在哪种情况下应该使用哪一个。
我想使用 Linq to SQL。我应该用什么?
I am new to Linq please guide me on some basic things.
In read some articles on Linq. Some authers fill data in var from Linq query, some fills list of custom type objects and some fills data in IEnumerable and some do it in IQuryable. I could not get what is difference in these 4 and which one should be used in which situation.
I want to use Linq to SQL. What should I use?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嗯,你永远不能声明一个方法返回
var
- 它只对局部变量有效。它的基本意思是“编译器,请根据赋值运算符右侧的表达式推断该变量的静态类型”。通常,如果 LINQ to Objects 查询返回某种序列,则它会返回
IEnumerable
,或者对于First()
之类的内容仅返回单个实例。如果 LINQ to SQL 或 EF 查询希望在现有查询的基础上构建更多查询选项,并在 SQL 构建过程中对添加的位进行分析,则它们将使用
IQueryable
。或者,使用IEnumerable
意味着任何进一步的处理都在客户端执行。我建议您不要关注要使用的返回类型,而是阅读 LINQ 的核心概念(以及语言增强本身,如
var
) - 这样您就会更好地了解 <为什么存在这些选项,以及它们的不同用例是什么。Well, you can never declare that a method returns
var
- it's only valid for local variables. It basically means "compiler, please infer the static type of this variable based on the expression on the right hand side of the assignment operator".Usually a LINQ to Objects query will return an
IEnumerable<T>
if it's returning a sequence of some kind, or just a single instance for things likeFirst()
.A LINQ to SQL or EF query will use
IQueryable<T>
if they want further query options to be able to build on the existing query, with the added bits being analyzed as part of the SQL building process. Alternatively, usingIEnumerable<T>
means any further processing is carried out client-side.Rather than focusing on what return type to use, I suggest you read up on the core concepts of LINQ (and the language enhancements themselves, like
var
) - that way you'll get a better feel for why these options exist, and what their different use cases are.