了解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,我为这个项目做出了贡献,所以我认为这是一个很棒的,快速而有效的学习方法]