如果我说我从LINQ中受益最的是LINQ to Objects,而不是LINQ to SQL或者LINQ to Entity,你信吗?Lambda与LINQ都只是.NET给我们提供的好工具,而数据库支持只是LINQ中很小的一部分,为什么还要纠结呢?仅举一个很小的例子,取2个集合的交集。以往自己写要多少代码,现在用LINQ就是一句话的事,代码简洁了,而且能把更多的精力从自己实现查询、排序上抽出来,放在业务规则和逻辑的设计上,有什么不好呢?
我只能说lz无知者无畏。LINQ是语言内置查询,哪里和数据库有关了?风马牛不相干的2个东西怎么比较?我来说一些LINQ能做的情景:(1)窗口上有10个文本框,现在要判断是否有空的,没有输入的,用LINQ做:bool isempty = this.Controls.Cast<Control>().Where(x => x is Form).Select(x => x as Form).Any(x => x.Text == "");(2)判断用户输入的10个数字是否重复: bool result = userinput.Disinct().Count() == userinput.Count();(3)对一个内存中的List排序: var orderedlist = source.OrderBy(x => x.Name);(4)在0-10中随机选取3个数字,而且这三个数字不能重复: int[] result = Enumerable.Range(0, 10) .Select(x => new { k = Guid.NewGuid(), v = x }).ToList() .OrderBy(x => x.k).Take(3).Select(x => x.v).ToArray();这些和数据库有关么?
楼主的意思只是针对linq to sql的吧。不过这方面我也没用过,一直都是靠sql语句实现的。但很多时候需要对IList<Model>操作查询linq还是很方便的,另外XML文档的搜索我也很喜欢用Linq。选择性的使用吧。
我也觉得它对 ‘集合’的贡献要比 SQL的重要的多,呵呵
楼主指的是linq to sql和sql之间。我学过一段时间linq,感觉针对sql方面,linq肯定是没有sql本身强。 但MS推出linq to sql技术是为那些对sql不熟或者不会的程序员提供的一种快速开发技术。楼上各位的意见都看过了,有个星星比较多的高手提出个观点是:我觉得这样说有点过了,linq也只是一种技术,并不是每个人都必须都得掌握。 每个人都有各自的编写习惯,和技术使用手段。 不能说不会某种技术就下断言说其不会这种语言。可以说每一种技术的出现都有它必然存在的道理。 楼主没必要在这个上纠结。
过度产品懂否?
linq 为什么还是ORM框架的一部分?
存在必然有原因
而且sql你不会。linq 你也够呛吧!!我是那么认为的!
请问楼主这个结论又是怎么得到的呢?
看到楼主有4个三角符号,我不禁有点怀疑,这是楼主自己么?
那个10%还是需要sql自己解决话说楼主敢发这个帖子就说明楼主对linq和sql都有一定的了解如果sql的的最基本的几个机制都不明白 他能学linq么?linq的基础是sql
即使是程序也要把linq给。楼主这么冰雪聪明应该懂的试问下 如果不懂数据库的人去学习linq 那么在学习的时候他怎么都要学一些sql
当他发现的sql的好处的时候自然就知道linq的有点和sql的优点
自然而然的结合使用
结合使用的后果就是 成为很多dba高手中的一员。我指的高手一员是sql server的
你是否发现这里用的是问号放在这里呢?目的就是喜欢大家讨论,因为曾经有个国企的项目经理说SQL是垃圾,LINQ才是好东西,所以我放的是问号,并没有因此下结论,4个三角符号很正常,不需要怀疑
bool result = userinput.Disinct().Count() == userinput.Count();(3)对一个内存中的List排序:
var orderedlist = source.OrderBy(x => x.Name);(4)在0-10中随机选取3个数字,而且这三个数字不能重复:
int[] result = Enumerable.Range(0, 10)
.Select(x => new { k = Guid.NewGuid(), v = x }).ToList()
.OrderBy(x => x.k).Take(3).Select(x => x.v).ToArray();这些和数据库有关么?
第一个问题,我觉得没有什么可讨论的。你可以把问题反过来问自己一下,既然都可以达到目的,人家为什么喜欢使用Linq呢?对于第二个问题,我觉得这是你说的。一般的对数据库增删改查简单操作的软件项目,要招聘什么DBA人员?纯粹是站着茅坑不拉屎。不要低估了程序员优化sql代码的能力。
linq会点。。但是没在项目用过。
linQ 的话,占用服务器资源比较大..你懂的..
能否推理出LZ是LINQ学的不好甚至没学过
幸好我都会,不然看完这个帖子心会拔凉拔凉的说句实话其实我更喜欢LINQ编程,怎一个方便了得,LINQ应该更加趋向未来的编程方式,更加简便。而LINQ对于楼上所说的占用服务器资源比较大,这些弊病随着时代的进步,完全是可以得到解决的,但是目前,LINQ还不能成为主流,只能做一些相对简单的项目
的确和数据库没有半毛钱的关系,
如果楼主你的SQL只是简单 select,update,Insert。那么你肯定觉得LINQ完全能取代SQL。
因为你觉得你不用写SQL代码,直接调用内置的方法就行。如果你做的项目业务逻辑非常复杂,经常碰到4,5张表的联合查询,
比如什么行转列的操作,乱七八糟的多了去了。
你就会发现这些只能用SQL来做,而且在数据量大的情况下性能,速度上根本不是一个档次上的。
而且 DBA的工作,据我所知根本就不关心写存储过程,SQL语句啥的,写的话也只是调试代码而已。
DBA的工作往往是数据库结构设计,索引设计,解决查询速度瓶颈问题。
这些都是基本,还要对硬件有所了解。总之楼主你的考虑的问题是多余,要像做一名牛叉的技术人员,这两样你必须都要会,而且是最基础的,
这两样没有可比性,谁也代替不了谁。
但如果采用领域驱动设计(DDD),根本不会存在这样的问题,复杂的查询是遇不到的,因为很多时候都仅仅需要单表查询,甚至查询都不需要,你说哪个效率高?
喜欢"方法链"式的LINQ风格,不喜欢SQL风格的LINQ写法
但MS推出linq to sql技术是为那些对sql不熟或者不会的程序员提供的一种快速开发技术。楼上各位的意见都看过了,有个星星比较多的高手提出个观点是:我觉得这样说有点过了,linq也只是一种技术,并不是每个人都必须都得掌握。
每个人都有各自的编写习惯,和技术使用手段。
不能说不会某种技术就下断言说其不会这种语言。可以说每一种技术的出现都有它必然存在的道理。
楼主没必要在这个上纠结。
你的意思是这个世上开发软件只能用.net
asp的不活了?php的不知了?java的不活了?
为什么一说LINQ就要和sql扯上呢?要么就准确点说LINQ TO SQL。LINQ to Objects、XML很方便、很好。
不过要临时从数据库生成表的话,在用vs写个程序未免太迟钝了。
linq不止可以操作数据库 也可以操作数据集合等
不过,几年之后,SSD以及超线程CPU普及之后,Linq会好些