我应该了解什么才能更好地理解LINQ?

3

由于LINQ是Dot Net中一种很好的查询语言,每个人都应该能够使用它。在开始学习LINQ之前,程序员需要具备哪些必要的能力呢?

学习完这些必要的能力后,他还应该了解哪些关于LINQ的重要提示呢?


你是在寻找 O/RM 映射器 LINQ to SQL 的技巧,还是针对 LINQ 语言的一般性建议? - Steven
@Steven - 我只是在寻找能帮助你理解LINQ(作为一种查询语言)的(基本)技能,比如Lambda。 - Nasser Hadjloo
5个回答

11

你对哪种 Linq 感兴趣 - Linq to Objects,Linq to SQL,还是实现自己的 Linq 提供程序?

我的建议是您应该首先了解 Linq 基于哪些特性:

  • IQueryable 和 IEnumerable 扩展方法

  • 方法链和延迟执行

  • 匿名方法和 lambda 表达式

  • Linq 查询语法

  • 表达式树(如果您打算实现自己的 Linq 提供程序)

然后这些特性依赖于更基本的概念:

  • 泛型

  • 委托

  • 集合

以下是几本可以帮助您的书籍:

  • C# in depth(J. Skeet)- 学习 C# 的好书
  • LINQ in Action(Marguerie、Eichert、Wooley)

2

一个对闭包/lambda、IEnumerable、泛型、表达式树和方法链有基本了解的人,会是一个不错的起点。LINQ实际上就是基于这些内容构建的一套工具集。

但你绝对可以在没有对每个功能都有扎实理解的情况下学习使用LINQ。


2
以上所有内容,再加上:扩展方法。 - Jonathan
@Nasser,如果你想查看由Linq生成的SQL代码以识别性能问题,那么这可能会很有用。 - Jonathan
@jonathanconway:我完全忘记了!Def.扩展方法。无论如何,我想我的答案现在已经多余了,因为ian31已经发布了一个更全面的列表。 - David Hedlund

2
如果你想了解LINQ背后的原理,那么学习一些基础的函数式编程非常有用,因为LINQ在很大程度上是基于这个范例。当然,在实践中使用LINQ并不需要这些知识,但它会帮助你理解在幕后发生了什么(更不用说学习函数式编程被认为可以让你成为一个更好的程序员)。
我写了一篇概述性文章,你可能会觉得有用: 除了函数式编程之外,了解所有C# 3.0特性也非常有帮助,特别是lambda表达式、扩展方法以及表达式树。从技术上讲,LINQ只是这三个特性的巧妙组合,因此一旦你理解了它们,就可以充分欣赏和受益于LINQ。

1

0

有一系列由Scott Stanfield制作的视频(我相信有8个),名为“LINQ TO SQL”。它们非常有帮助,可以理解概念以及如何使用LINQ。

链接在此处

或者,尝试谷歌搜索:LINQ TO SQL + Scott Stanfield

我特别喜欢使用它,但使用不多。始终要小心...但它非常有用。观看这些视频并得出自己的结论。

享受吧!


@PH.E 我正在寻找需要掌握的技能来学习 LINQ,而不是一系列好的 LINQ 教程。 (但感谢您的教程系列) - Nasser Hadjloo
@Nasser 我相信最好的方法是你去实践、尝试,很快就能掌握LINQ的所有领域。对我来说效果很好(当然,我不是LINQ的专家)。但是我的朋友,祝你好运,学习愉快。 - kran1um

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接