首页 新闻 搜索 专区 学院

Lambda 与 linq 区别

1
悬赏园豆:20 [已解决问题] 解决于 2012-04-20 11:53

我想问一下 Lambda 与 linq 区别 是什么?

sunjie的主页 sunjie | 初学一级 | 园豆:125
提问于:2012-04-20 09:27
< >
分享
最佳答案
8

linq和lamda半毛钱关系啊。lamda简单说就是个语法糖,本来你要声明实现一个方法,然后在调用,要写一大堆代码,可是微软总是认为程序员是懒散的,如二楼的例子:

Func<int,int,int> fc=(int x,int y)=>x*y;

你看就一句代码,声明一个方法,返回值为int,参数是两个int。功能是计算两个整数的乘积。

 

linq是微软认为当下程序已经不仅仅是简单的和数据库打交道了,我们的数据来源可能很多种,所以除了那个linq to sql,还出现了linq to xml等等,当然实际上我们最常用的就是linq to entity,这里entity就是内存对象了。说白了linq就是结构化查询语言,只不过不同于sql,他不局限于关系数据库。当然也引进了一些特征:如延迟执行,为了智能提示又改写了sql的习惯,入sql是select * from table ,linq中是from table selec var。

至于二楼写的那个,其实就是个混血,linq与lamda混用,因为有时候我们不想写太长的linq语句,然后微软对于很多类型,如list、dictionary等等集合都实现了或多或少的linq接口,你只要传一个方法给他就行了,然后因为这里的参数是方法,所以我们因为懒散,就又开始使用lamda了。于是就出现了二楼举的第三个例子

收获园豆:10
BLoodMaster | 初学一级 |园豆:135 | 2012-04-20 10:13
其他回答(6)
0

你为什么不直接看MSDN?那里应该说的特别详细。

Halower | 园豆:1723 (小虾三级) | 2012-04-20 09:29

弱弱问句:怎样在MSDN:http://msdn.microsoft.com/zh-cn/library/ms123401.aspx 上面找关于Linq和Lambad的区别尼?搜索又搜不出来,难道只能在左侧菜单一下一下的点出来找?

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-04-23 15:38
1

Func<int,int,int> fc=(int x,int y)=>x*y;

 

var someInts = from a in Enumerable.Range(1, 5)
from b in Enumerable.Range(6, 5)
where a < 3 && b < 104 select new { a, b, sum = a + b };

 

Enumerable.Range(2, 5).Select(x => string.Format("_{0}", x)

 

不好描述,第一个是lambda,第二个是Linq,第三个是Linq里面也有方法体和lambda

我介绍LINQ的博客 http://www.cnblogs.com/cmsdn/archive/2012/04/12/2442107.html

xu_happy_you | 园豆:222 (菜鸟二级) | 2012-04-20 09:47
-1

Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 Where)的参数。

使用基于方法的语法在 Enumerable 类中调用 Where 方法时(像在 LINQ to Objects 和 LINQ to XML 中那样),参数是委托类型 System.Func<T, TResult> 使用 Lambda 表达式创建委托最为方便。 例如,当您在 System.Linq.Queryable 类中调用相同的方法时(像在 LINQ to SQL 中那样),则参数类型是 System.Linq.Expressions.Expression<Func>,其中 Func 是包含至多十六个输入参数的任何 Func 委托。 同样,Lambda 表达式只是一种用于构造表达式树的非常简练的方式。 尽管事实上通过 Lambda 创建的对象的类型是不同的,但 Lambda 使得 Where 调用看起来类似。

收获园豆:10
苦逼面条 | 园豆:289 (菜鸟二级) | 2012-04-20 09:59
3

前者是表达式,后者是语句!表达式要符号链接,语句就不用了!表达式是类似C#语法的写法,语句是类数据库语法的写法!

MrCui | 园豆:162 (初学一级) | 2012-06-05 15:33
0

Lamda表达式,是拉姆达表达,Linq的数学基础,linq只是一个Lamda的一个实现。但从Lamda到linq是有个技术发展过程的,不是一步到位的。在 .NET 上的实现,就经历了大概3个过程。Lamda 表达式这个数学问题,证明或表明了,一个函数可以用更简单的方式来表述,参数定义是可以省略的,这样,利用.net 的委托,加上之前匿名函数,等等技术要点,就形成了 LINQ。你可以在WIKI查查。 

船长&CAP | 园豆:318 (菜鸟二级) | 2012-06-07 16:55
0

微软霸霸贴心

Cgrain | 园豆:1027 (小虾三级) | 2020-02-13 21:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册