了解LINQ

时间:2020-03-05 18:40:45  来源:igfitidea点击:

概述

我在这个网站上问了很多的问题之一是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的编码效率是一个被忽略但重要的好处,例如,用很少的代码就可以完成多少工作。我个人发现查询语法易​​于阅读和理解。