了解LINQ

时间:2008-08-19 14:50:43

标签: linq linq-to-sql linq-to-entities linq-to-objects

概述

我在这个网站上提出的很多问题之一是LINQ。我提出的问题范围广泛而且多种多样,往往背后没有太多背景。因此,为了巩固我在Linq上获得的知识,我发布了这个问题,以便在我继续学习LINQ时使用其他信息来维护和更新它。

我也希望它能够成为想要了解LINQ的其他人的有用资源。

什么是LINQ?

来自MSDN

  

LINQ项目是一个代号   .NET的扩展集   包含的框架   语言集成查询,集合和   变换操作。它扩展了C#   和Visual Basic使用母语   查询语法并提供类   图书馆利用这些   能力。

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

有哪些LINQ版本?

目前,Microsoft提供了一些不同的LINQ提供程序:

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

有什么好处?

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

那么LINQ怎么办?

Chookoutput CSV files提供了一种方法 Jeff显示了如何remove duplicates from an array
鲍勃得到distinct ordered list from a datatable Marxidad显示了如何sort an array
Dana获得了实施Quick Sort Using Linq

的帮助

从哪里开始?

GateKiller's question的链接摘要位于之下:
Scott Guthrie提供了intro to Linq on his blog
LINQ on MSDN

的概述

ChrisAnnODell建议退房:

我需要使用LINQ?

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

还有一个名为LinqBridge的工具,它允许您在C#2.0中运行Linq之类的查询。

使用LINQ的提示和技巧

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

9 个答案:

答案 0 :(得分:11)

答案 1 :(得分:6)

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

答案 2 :(得分:4)

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

答案 3 :(得分:4)

一些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 :(得分:4)

恕我直言,一个被忽视但重要的好处是LINQ的编码效率,例如用如此少的代码可以实现多少。我个人觉得查询语法易​​于阅读和理解。

答案 5 :(得分:3)

关于使用 LINQ to SQL

的一些注意事项

Has Microsoft really killed LINQ to SQL?

Is LINQ to SQL DOA?

还有一些关于第一版实体框架controversy,包括petition

答案 6 :(得分:3)

我认为,答案是“LINQ有哪些口味?”不完整。 首先,你可以创造自己的“味道”。是的,这是一项高级任务,但现在有很多不同的LINQ实现。

以下是Charlie Calvert博客上现有LINQ提供商的列表(以及更多关于学习LINQ的资源):Links to LINQ

还有Matt Warren关于如何创建自己的LINQ提供程序的一系列博客文章:LINQ: Building an IQueryable provider series

答案 7 :(得分:2)

我的2美分,阅读“C#in Depth”一书中的“11个查询表达式和LINQ to Objects”和“12 LINQ beyond collections”,以了解LINQ如何工作。

答案 8 :(得分:0)

对于Linq Practice

如果你想在练习和答案上练习LINQ,那么很容易设置,在我看来,真棒:

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

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

[披露:我从中学到了一些linq,我为项目做出了贡献,所以我认为这是一种非常棒,快速有效的学习方式。]