LINQ学习指南

190

概述

这个网站上我经常被问到的一个问题是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有哪些不同的版本?

目前,微软提供了几个不同的LINQ提供程序:

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

LINQ有哪些好处?

  • 标准化的查询多个数据源的方法
  • 查询时编译时安全性
  • 对内存中对象执行集合操作的优化方式
  • 能力去调试查询

那么我可以用LINQ做什么?

Chook提供了一种输出CSV文件的方式
Jeff展示了如何从数组中移除重复项
Bob从datatable获取了一个不同有序列表
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的技巧和窍门

This question有一些使用LINQ的棘手方法


+1 非常棒的帖子,也感谢提到了 ScottGu 的博客。那是一个非常好的资源,也是我最初学习 LINQ 的地方。 - Evan Plaice
Hooked On LINQ 跳转到了一些日本网站。谷歌翻译提到了舔肛和其他不安全的臀部内容。:S 我无法编辑它,原因不明。 - Shane
9个回答

13

为什么这个delicious.com会重定向到一个名为Dmail的扩展程序在Chrome商店上?难道你是指https://del.icio.us/吗? - Soner Gönül

7
提到LINQ to Entities是因为ADO.NET Entity Framework将成为重要的.NET模块。

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


4

在我看来,LINQ的一个被忽视但非常重要的好处是编码效率,例如用如此少的代码就可以完成很多工作。我个人发现查询语法易于阅读和理解。


4

获取书籍《Linq实战》,它是一本易读的编程书籍,真正教会你如何使用Linq和.NET 3.5的新功能,其中一些酷炫的部分为该语言增添了不少亮点。


3
我认为,“有哪些LINQ的风味?”这个问题的答案是不完整的。 首先,你可以创建自己的“风味”。是的,这是一项高级任务,但现在有很多不同的LINQ实现。
以下是Charlie Calvert博客上现有的LINQ提供程序列表(以及更多关于学习LINQ的资源):Links to LINQ
此外,Matt Warren在他的博客中有一系列关于如何创建自己的LINQ提供程序的精彩文章:LINQ: Building an IQueryable provider series

3

2

我的建议是,阅读《C#深入浅出》一书中的第11章“查询表达式和LINQ到对象”和第12章“超越集合的LINQ”,以了解LINQ的工作原理。


0

LINQ 练习

如果你想要一些关于 LINQ 的练习和答案,非常容易设置,而且在我看来非常棒:

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

从git下载,使用Visual Studio打开。你的工作就是让测试通过。
[声明:我从中学到了一些LINQ,并为这个项目做出了贡献,所以我认为这是一个很棒、快速和高效的学习方式。]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接