了解LINQ
概述
我在这个网站上问了很多的问题之一是LINQ。我所提出的问题涉及面很广,而且种类繁多,而且往往没有太多背景信息。因此,为了巩固我在Linq上获得的知识,我在发布此问题,以期在我继续学习LINQ时使用其他信息来维护和更新它。
我也希望它对其他想了解LINQ的人来说将成为有用的资源。
什么是LINQ?
从MSDN:
The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities.
这意味着LINQ提供了一种使用通用语法查询各种数据源的标准方法。
LINQ有哪些口味?
当前,Microsoft提供了一些不同的LINQ提供程序:
- Linq to Objects,使我们可以对任何IEnumerable对象执行查询。
- Linq to SQL,它允许我们以面向对象的方式对数据库执行查询。
- Linq to XML,使我们可以查询,加载,验证,序列化和处理XML文档。
- 如Andrei建议的实体的Linq
- Linq到数据集
还有很多其他功能,其中很多都在这里列出。
有什么好处?
- 查询多个数据源的标准化方法
- 编译查询的时间安全性
- 在内存对象上执行基于集合的操作的优化方式
- 调试查询的能力
那我可以用LINQ做什么呢?
Chook提供了一种输出CSV文件的方法
Jeff展示了如何从数组中删除重复项
鲍勃从数据表中获得一个独特的有序列表
Marxidad显示如何对数组进行排序
Dana获得使用Linq实施快速排序的帮助
从哪儿开始?
以下是GateKiller问题的链接摘要:
斯科特·格思里(Scott Guthrie)在博客上向Linq作了介绍
MSDN上的LINQ概述
ChrisAnnODell建议我们查看以下内容:
- 迷上了Linq
- 101个Linq样本
- LinqPad
我需要使用LINQ吗?
Linq当前在VB.Net 9.0和C3.0中可用,因此我们需要Visual Studio 2008或者更高版本才能获得全部好处。 (我们始终可以在记事本中编写代码并使用MSBuild进行编译)
还有一个名为LinqBridge的工具,它将允许我们在C2.0中像运行查询一样运行Linq。
使用LINQ的技巧和窍门
这个问题有一些使用LINQ的棘手方法
解决方案
回答
这里有101个Linq样本,如果我们只需要一个快速的语法示例,它们是一个很好的参考。
我们也不要忘记LinqPad :)
回答
由于ADO.NET实体框架将是一个重要的.NET模块,因此提及LINQ到实体。
回答
获得《 Linq in Action》一书,对于一本编码书籍而言,它是一本易读的书,并且真正地教会我们如何使用Linq和.NET 3.5的新功能,以及它们为该语言提供的一些很酷的部分。
回答
LINQ实体:
- 视频演练
- 频道9的影片
- 实体框架常见问题
- 实体框架绩效
我在Delicious.com上添加了更多标签。
回答
有关使用LINQ to SQL的一些注意事项:
微软真的杀死了LINQ to SQL吗?
LINQ to SQL DOA是吗?
关于Entity Framework的第一个版本也存在一些争议,包括请愿书。
回答
一些LINQ技巧:
- 在联接之前应用过滤器以提高查询性能
- 使用对象引用比较过滤LINQ查询
- 将聚合应用于LINQ中的空集合到SQL查询
- 延迟将LINQ中的属性加载到SQL
- 使用表值函数并启用急切加载
- 在LINQ to Objects查询中以正确的顺序放置连接
- 在循环内编写LINQ查询
http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp
回答
我认为,答案是" LINQ有哪些口味?"不完整。
首先,我们可以创建自己的"风味"。是的,这是一项高级任务,但是现在有许多不同的LINQ实现。
这是Charlie Calvert的博客上现有LINQ提供程序的列表(以及有关学习LINQ的更多资源):链接到LINQ。
此外,Matt Warren还撰写了一系列精彩的博客文章,介绍如何创建自己的LINQ提供程序:LINQ:构建IQueryable提供程序系列
回答
恕我直言,LINQ的编码效率是一个被忽略但重要的好处,例如,用很少的代码就可以完成多少工作。我个人发现查询语法易于阅读和理解。