了解LINQ
概观
我在这个网站上问了很多关于LINQ的东西之一 。 我所问的问题是广泛而多样的,往往没有太多背景。 因此,为了巩固我在Linq上获得的知识,我发布了这个问题,以便在我继续学习LINQ时,通过其他信息来维护和更新它。
我也希望它能certificate对于想了解LINQ的其他人来说是一个有用的资源。
什么是LINQ?
来自MSDN :
LINQ项目是.NET Framework的一组扩展的代码,包括语言集成的查询,设置和转换操作。 它扩展了C#和Visual Basic语言的查询语法,并提供类库来利用这些function。
这意味着LINQ提供了使用通用语法来查询各种数据源的标准方法。
有什么风味的LINQ?
目前,微软提供了几种不同的LINQ提供商:
- Linq to Objects ,它允许你在任何IEnumerable对象上执行查询。
- Linq to SQL允许您以面向对象的方式对数据库执行查询。
- Linq to XML ,它允许您查询,加载,validation,序列化和处理XML文档。
- Linq对实体的build议由安德烈
- Linq到数据集
还有其他很多,其中很多都列在这里 。
有什么好处?
- 标准化的方式来查询多个数据源
- 编译查询的时间安全性
- 优化的方式在内存对象上执行基于集合的操作
- 能够debugging查询
那我能用LINQ做什么?
Chook提供了一种输出CSV文件的方法
杰夫展示了如何从数组中删除重复项
鲍勃从一个数据表中获得一个不同的有序列表
Marxidad展示了如何对数组进行sorting
Dana获得使用Linq快速sorting的帮助
从哪儿开始?
GateKiller的问题链接摘要如下 :
Scott Guthrie 在他的博客上介绍了Linq
MSDN上的LINQ概述
ChrisAnnodellbuild议检查一下:
- 挂在Linq上
- 101 Linq样品
- LinqPad
我需要什么来使用LINQ?
Linq目前在VB.Net 9.0和C#3.0中可用,所以你需要Visual Studio 2008或更高版本来获得全部的好处。 (你总是可以在记事本中编写代码并使用MSBuild编译)
还有一个名为LinqBridge的工具,它可以让你像在C#2.0中查询一样运行Linq。
使用LINQ的技巧和窍门
这个问题有一些棘手的方法来使用LINQ
这里有101个Linq示例 ,如果你只是想要一个快速的语法示例,那么这个示例是一个很好的参考。
让我们也不要忘记LinqPad 🙂
LINQ to实体:
- video演练
- 频道9video
- entity frameworkFAQ
- entity framework的性能
在Delicious.com上我有更多的标签 。
提到LINQ to Entities,因为ADO.NET Entity Framework将是一个重要的.NET模块。
获取“ 行动中的Linq”这本书是一本很容易阅读的编程书,并且教你如何使用Linq和.NET 3.5的一些新function。
关于使用LINQ to SQL的一些注意事项:
微软真的杀了LINQ to SQL?
是LINQ to SQL DOA?
还有一些有关Entity Framework第一版的争议 ,包括请愿书 。
一些LINQ技巧:
- 在联接之前应用筛选器以提高查询性能
- 使用对象引用比较过滤LINQ查询
- 在LINQ to SQL查询中应用聚合来清空集合
- 将LINQ to SQL中的属性延迟加载
- 在启用加载的情况下使用表值函数
- 在LINQ to Objects查询中按正确顺序放入连接
- 在循环内部创build一个LINQ查询
http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp
恕我直言,一个被忽视但重要的好处是LINQ的编码效率,例如,用这么less的代码可以完成多less。 我个人发现查询语法容易阅读和理解。
我想,“LINQ有什么味道?”的答案。 不完整。 首先,你可以创build自己的“风味”。 是的,这是一个高级任务,但现在有很多不同的LINQ实现。
以下是Charlie Calvert博客上的现有LINQ提供者列表(加上学习LINQ的更多资源): LINQ链接 。
另外,Matt Warren还提供了一系列关于如何创build自己的LINQ提供者的博文: LINQ:构build一个IQueryable提供者系列
我的2美分阅读“C#深度”一书中的章节“11查询expression式和LINQ到对象”和“超越集合的12 LINQ”来理解LINQ是如何工作的。
Linq练习
如果你想在练习和答案上进行一些练习,那么很容易build立,在我看来,真棒:
https://github.com/walkhard/linq-exercises
从git下载,在Visual Studio中打开。 你的工作是让testing通过。
[披露:我从中学到了一些linq,我为这个项目做出了贡献,所以我认为这是一个很棒的,快速而有效的学习方法]