了解LINQ


Question

概观

我在这个网站上询问了很多关于LINQ 。 我问过的问题广泛而多样,往往没有太多背景。 因此,为了巩固我在Linq上获得的知识,我发布了这个问题,目的是在我继续学习LINQ时,通过其他信息来维护和更新它。

我也希望它能证明对于希望了解LINQ的其他人来说是一个有用的资源。

什么是LINQ?

来自LINQ

LINQ项目是.NET Framework的一组扩展的代码,它包含语言集成的查询,设置和转换操作。 它扩展了C#和Visual Basic的查询语言语法,并提供了类库来利用这些功能。

这意味着LINQ提供了使用通用语法来查询各种数据源的标准方法。

什么味道的LINQ在那里?

目前,微软提供了几种不同的LINQ提供商:

还有很多其他的,其中很多都在here列出。

有什么好处?

  • 标准化的方式来查询多个数据源
  • 编译查询的时间安全性
  • 优化的方式在内存对象上执行基于集合的操作
  • 能够调试查询

那么,我可以用LINQ做什么?

Chook提供了一种输出CSV文件的方法
Jeff演示了如何从数组中删除重复项
鲍勃从数据表中获得一个不同的有序列表
Marxidad展示了如何对数组进行排序
Dana获得了使用Linq实现快速排序的帮助

从哪儿开始?

GateKiller的问题链接摘要如下
Scott Guthrie 在他的博客上提供了Linq介绍
MSDN上LINQ概述

ChrisAnnODell建议检查一下:

我需要什么来使用LINQ?

Linq目前在VB.Net 9.0和C#3.0中可用,因此您需要Visual Studio 2008或更高版本才能获得全部优势。 (您可以随时在记事本中编写代码并使用MSBuild进行编译)

还有一个名为LinqBridge的工具,它可以让你像在C#2.0中查询一样运行Linq。

使用LINQ的技巧和窍门

这个问题有一些使用LINQ的棘手方法




对于Linq练习

如果你想在练习和答案上做一些练习,很容易设置,在我看来,真棒:

https://github.com/walkhard/linq-exercises

从git下载,在Visual Studio中打开。 你的工作是让测试通过。

[披露:我从中学到了一些linq,并且我为这个项目做出了贡献,所以我认为这是一个很棒,快速和高效的学习方式。]




获取“ Linq in Action ”一书它对于一本编码书很容易阅读,并且真正教你如何使用Linq和.NET 3.5的一些新功能,这些部分是他们为语言编写的一些很酷的部分。




一些LINQ技巧:

  • 在联接之前应用过滤器以提高查询性能
  • 使用对象引用比较过滤LINQ查询
  • 将聚合应用于LINQ to SQL查询中的空集合
  • 延迟加载LINQ to 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 Provider的博文: LINQ:构建一个IQueryable提供程序系列