当前位置:编程学习 > C#/ASP.NET >>

为什么很多公司都不用linq

我在深圳面试了很多家,他们有的就不知道什么是linq , 有的说 linq 执行慢  , 好像还没有看到哪个公司用LINQ --------------------编程问答-------------------- 因为这些公司的程序员傻呗。他们不能完整掌握C#语法,不会用。 --------------------编程问答-------------------- 一叶障目?  有强大的工具放着不用,岂不可惜。

如果说Linq to Entity或者Linq to SQL慢,让他们受不了,那么Linq to Objects与Linq to Xml还是很强大的。 --------------------编程问答-------------------- 很正常的哇,一般公司都有自己的orm之类的东东,都是按照那个做的,不懂或者不知道也很正常
不过说linq慢的就只是把linq用在了sql方面,而不是linq to source --------------------编程问答-------------------- 初级程序员搞不懂委托、泛型、接口这最基本的3个C#语法,你说他怎么用LINQ。 --------------------编程问答-------------------- 初级程序员的另一个问题是,根本就不知道什么是linq,他们分不清linq和linq to sql,明明是C#语言特性,非认为是什么ORM框架。

实际上他们除了精通各种GridView、repeater的绑定,对其他名词大多是一知半解。 --------------------编程问答-------------------- 不是哪个公司都去赶潮流的,每个公司都有自己的需求 --------------------编程问答-------------------- LINQ带来的,不仅仅是数据库的这一小块,非得把LINQ限定为一种数据库的存取封装技术或者ORM工具,本身就是对LINQ的误解。

--------------------编程问答-------------------- 一个公司找来的程序员连基本的C#语法有一半都不会,还好意思说自己不追赶潮流。LINQ只是把委托、接口、泛型三个概念作为一个C#程序员的门槛提出来了。我可以直接地说,这些三角猫的程序员其实本来就是滥竽充数的,到了C# 3以后越发混不下去了。 --------------------编程问答--------------------
引用 6 楼 shwicho 的回复:
不是哪个公司都去赶潮流的,每个公司都有自己的需求


这不是仅仅是潮流。

仅举一个局部的例子:没有LINQ之前,我们要花多少精力去构造插入算法、查找算法,以及其他的一些工作。

当我们可以有更好的工具,让我们从底层的算法纠缠中脱身,而把业务与时间更多地放在业务需求上时,为什么要说“NO!”呢? --------------------编程问答--------------------
引用 9 楼 abbey 的回复:
引用 6 楼 shwicho 的回复:

不是哪个公司都去赶潮流的,每个公司都有自己的需求


这不是仅仅是潮流。

仅举一个局部的例子:没有LINQ之前,我们要花多少精力去构造插入算法、查找算法,以及其他的一些工作。

当我们可以有更好的工具,让我们从底层的算法纠缠中脱身,而把业务与时间更多地放在业务需求上时,为什么要说“NO!”呢?


他们不要说算法,连循环都不愿意写。

所有东西都围绕控件。

你不是要读取数据吗?绑定。
你不是要传值么?传控件。
你不是要排序么?控件排序。 --------------------编程问答--------------------
引用 10 楼 caozhy 的回复:
他们不要说算法,连循环都不愿意写。

所有东西都围绕控件。

你不是要读取数据吗?绑定。
你不是要传值么?传控件。
你不是要排序么?控件排序。


要用积木搭个漂亮结实的房子,也得下点功夫啊 --------------------编程问答-------------------- 一个垃圾的软件公司,根本不需要合格的程序员。

首先他们天天招人,为什么呢?因为他们需要足够足够便宜的软件工人,让他们做初级的,可以替代的工作。并且压低工资,不行就换一个是他们的第一法则。

然后是他们招来的人,只要工资合适,什么人都招。很多人庆幸自己忽悠了公司的面试官,以为讨了便宜,实际上没有本事只能给人家忽悠,哪有忽悠人家的资本。 --------------------编程问答-------------------- 扩展方法、匿名类、lambda表达式—这是让C#变得丰满和优雅的重大改进。 --------------------编程问答-------------------- 天天来csdn的人有一种错觉,就是程序员都是这么菜。实际上这里大部分问问题的都是学生(糊个作业,以后改行的),要不就是青鸟等技校出来的代码工人,要不根本就不是写程序的外行,跑这里找免费苦力的。

实际上应该不应该用LINQ这种可笑的问题在程序员中早就达成了共识。如同问厨师用不用味精和盐一样毫无意义。 --------------------编程问答--------------------
引用 13 楼 abbey 的回复:
扩展方法、匿名类、lambda表达式—这是让C#变得丰满和优雅的重大改进。

所以很可笑的问题就是,很多人对C#的认识还停留在C# 1.0时代,认为C#和Java差不多。Java程序员拿起Visual Studio就能写C#程序。 --------------------编程问答--------------------
引用 15 楼 caozhy 的回复:
所以很可笑的问题就是,很多人对C#的认识还停留在C# 1.0时代,认为C#和Java差不多。Java程序员拿起Visual Studio就能写C#程序。


C#一直在进步。仅就我涉及的部分而言,泛型、可空类型、扩展方法、匿名类以及lambda表达式,以及由此衍生出的其他一些技术,是让我越发喜欢它的原因。甚至如var这样的语法糖,也令我惊喜不已。 --------------------编程问答--------------------
引用 6 楼 shwicho 的回复:
不是哪个公司都去赶潮流的,每个公司都有自己的需求


这句话说的荒谬就在于,LINQ是C#语言实现排序、分组、筛选、统计数据的最佳方式。哪一个搞软件的没有排序、分组、筛选、统计数据的需求。明明是武大郎个子矮,非要赖人家裤子长。 --------------------编程问答-------------------- lambda是c++11的标准。
有些公司stl都不让用更别说是lambda了。

如果你用c#写个tcp的服务器你会用lambda??
如果你做winform界面。人眼是1/24 =0.04秒。你的处理时间只有这么短。不在这个时间处理完。你的东西就卡了。你用会lambda??
c#已经慢很多。再用这个谁受的了。
小项目,只是数据相关的东西用用还差不多。 --------------------编程问答--------------------
引用 16 楼 abbey 的回复:
引用 15 楼 caozhy 的回复:
所以很可笑的问题就是,很多人对C#的认识还停留在C# 1.0时代,认为C#和Java差不多。Java程序员拿起Visual Studio就能写C#程序。


C#一直在进步。仅就我涉及的部分而言,泛型、可空类型、扩展方法、匿名类以及lambda表达式,以及由此衍生出的其他一些技术,是让我越发喜欢它的原因。甚至如var这样的语法糖,也令我惊喜不已。


C#与其说一直在进步,不如说是在奋力追赶其他主流编程语言。扩展方法可能挺不错,但是Ruby这种支持原型的语言,可以动态添加方法,只能说C#的扩展方法是在藏拙。var的首要动机是为了配合匿名对象。但是和函数式编程语言相比,C#远远不够。泛型、可空类型固然不错,可是动态语言完全取消了类型的自由C#也望尘莫及。

我赞同《黑客和画家》这本书的观点。现代软件为什么推崇动态语言?因为软件的复杂度在提高,硬件成本在降低。现在软件越来越难以将需求、设计和编码区别开来。优秀的编程语言应该是一只铅笔,允许开发者一边编码,一边设计,一边修改,一边探索最佳的做法。而静态语言更像一只钢笔。

VS11看来包含的C#改进不大,可能叫C# 4.5。我不知道C# 5会往哪里走。但是静态语言要保持和之前的兼容性,还要不断追赶主流语言,恐怕遇到的阻力越来越大。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 16 楼 abbey 的回复:
C#一直在进步。仅就我涉及的部分而言,泛型、可空类型、扩展方法、匿名类以及lambda表达式,以及由此衍生出的其他一些技术,是让我越发喜欢它的原因。甚至如var这样的语法糖,也令我惊喜不已。
……


赞一个 --------------------编程问答-------------------- 他们还守着老旧的编程方式,没有进取意识。 --------------------编程问答-------------------- 同意上面大侠的意见,这个跟公司或者说开发团队的水平有关,就好比你跟整天垒猪圈的人谈欧式还是中式
设计风格一样道理。 --------------------编程问答-------------------- 想用就用嘛 又不是很难 --------------------编程问答-------------------- 精彩,,,,, --------------------编程问答-------------------- 不错。。。
有些公司就不敢用新技术,想花较少的钱招牛X的程序员,那怎么可能呢?
公司不愿出血,那怎么能用得上新技术了。
公司的总监不看看新闻怎么能知道有新技术叱
有些公司更恶,招一下java方向的当总监,而程序员用的是.net
--------------------编程问答--------------------
引用 17 楼 caozhy 的回复:
引用 6 楼 shwicho 的回复:
不是哪个公司都去赶潮流的,每个公司都有自己的需求


这句话说的荒谬就在于,LINQ是C#语言实现排序、分组、筛选、统计数据的最佳方式。哪一个搞软件的没有排序、分组、筛选、统计数据的需求。明明是武大郎个子矮,非要赖人家裤子长。


  弱弱的问一句:Linq的底层实现是什么?Linq实现排序,在底层是如何完成的?
--------------------编程问答-------------------- LZ会了linq 再来看他们说的话吧 --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
委托、泛型、接口这最基本的3个C#语法,你说他怎么用LINQ。

LINQ是"委托、泛型、接口",但"委托、泛型、接口"并非LINQ。  LINQ是有用但不必神化它。 --------------------编程问答--------------------
引用 29 楼 z81434362 的回复:
引用 4 楼 caozhy 的回复:
委托、泛型、接口这最基本的3个C#语法,你说他怎么用LINQ。

LINQ是"委托、泛型、接口",但"委托、泛型、接口"并非LINQ。 LINQ是有用但不必神化它。

谁告诉你LINQ是“委托、泛型、接口”的? --------------------编程问答--------------------
引用 27 楼 dengyouhua 的回复:
引用 17 楼 caozhy 的回复:

引用 6 楼 shwicho 的回复:
不是哪个公司都去赶潮流的,每个公司都有自己的需求


这句话说的荒谬就在于,LINQ是C#语言实现排序、分组、筛选、统计数据的最佳方式。哪一个搞软件的没有排序、分组、筛选、统计数据的需求。明明是武大郎个子矮,非要赖人家裤子长。


  弱弱的问一句:Linq的底层实现是什么?Linq实现排序,在底层……

首先,LINQ的排序是稳定的,并且依赖HashCode,猜测它可能是加上稳定的堆排(很有可能,因为它是延迟的)或者快排。LINQ To XXX则依赖其提供者的排序。 --------------------编程问答-------------------- 有自己的开放框架,自然就不选Linq...... --------------------编程问答-------------------- Ctrl+C and Ctrl+V is enough for some companies. --------------------编程问答-------------------- 能解决实际问题,能赚到钱才是王道,在讨论用什么工具只能说明还是儿童级的程序员 --------------------编程问答-------------------- 新技术不一定都好用,有时候无线发报机比手机可靠。 --------------------编程问答-------------------- 我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。 --------------------编程问答--------------------
引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为其实linq的核心在与后面的表达式树解析上,所以如果你正确的提供了linq的provider,他会自动生成对应的数据库版本的语句,所以无所谓是linq去排序,还是数据库端排序统计,他们结果都是一个故事

当然目前linq的provider的缺点也存在,那就是暂时还没有啥很好的办法去简单处理多表连接这块的东西,除非在去人为设定一套map规则比如EF的codefirst --------------------编程问答--------------------

linq语法很有意思  --------------------编程问答-------------------- linq 执行的时候也是翻译成sql语句才执行的 --------------------编程问答-------------------- 。。搞晕我了 --------------------编程问答--------------------
引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水程序员”(虽然我认为这种人根本不算程序员,因为程序员必然是编写程序、创造代码的)不需要“编写和创造代码”,他们的一般工作(我猜测和你描述得很类似)就是把后端的数据库和前端的用户界面粘贴起来,凑出一个可用的程序。因为他们编写的代码只是将现有的程序集成起来,而本身不具备价值类似胶水而得名。因为他们不编写代码,所以他们对改善程序员效率的技术并不关心。他们关心的是那些用户界面和数据库技术中已经有的功能。当然一个良好的胶水程序员应该知道,除了数据库以外,Grid控件等也提供了排序。但是对于程序员来说,你的任务是创造开箱可用的代码,如果程序员为胶水程序员提供的东西本身沾满胶水,那么你就会在这个论坛看到这样的提问了:“请问引用正则表达式库需要如何配置数据库”“请问我用的是控制台程序没有办法添加ListView如何传递Session”。 --------------------编程问答--------------------
引用 39 楼 smg008 的回复:
linq 执行的时候也是翻译成sql语句才执行的


又来一个根本连LINQ是什么都不知道的。为什么那么多人在论坛里面发表高见之前就不能先了解下自己评论的是什么呢? --------------------编程问答-------------------- linq其实很好用的。我一直都用它,ado.net基本都不用 --------------------编程问答-------------------- 我觉得这就跟当初面向对象出来的时候大部分人还都是结构化编程一样 --------------------编程问答--------------------
引用 4 楼 caozhy 的回复:
初级程序员搞不懂委托、泛型、接口这最基本的3个C#语法,你说他怎么用LINQ。

确实啊,LINQ在这三方面利用的淋漓尽致 --------------------编程问答--------------------
引用 41 楼 caozhy 的回复:
引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水程序员”(虽然我认为这种人根本不算程序员,因为程序员必然是编写程序、创造代码的)不需要“……


我在使用linq时可以感觉到你说的那种程序员友好性,但某种程度上我一直认为他是一种语法糖。我说的不明白是说,这玩意和ORM框架在,数据库的数据获取操作上有什么本质不同,而在操作本地数据上,又与ADO.net中的DATASET有什么不同(除了语法层面上的易用以外)。 --------------------编程问答--------------------
引用 42 楼 caozhy 的回复:
引用 39 楼 smg008 的回复:
linq 执行的时候也是翻译成sql语句才执行的


又来一个根本连LINQ是什么都不知道的。为什么那么多人在论坛里面发表高见之前就不能先了解下自己评论的是什么呢?


这个回复和37楼的回复把我搞糊涂了。那么真相是什么呢? --------------------编程问答-------------------- 应该看情况而定吧 LINQ在平常是很好用 但如果数据量太大的话用LINQ确实会降低效率 有些时候最plain的code往往效率最高 我的习惯就是在数据量大的情况下尽量不用.net封装很多的东西 --------------------编程问答-------------------- 扩展方法还是可以用,匿名方法和lambda表达式就要非常谨慎了,一般情况下都建议用命名方法,因为涉及到变量的作用域问题,用匿名方法和lambda表达式很容易产生比较隐蔽的Bug.特别是在多线程处理的时候,比如threadstart方法就最好不要用lambda表达式. 
不要觉得语法上新奇就用,而是要弄明白其机理,以决定什么时候可以用,什么时候要不用.

另外linq的结果是一个查询,但这个查询的枚举的时候是没有规律的,在需要保证数据访问顺序的时候还是要数组访问方式.而且查询在迭代访问过程中是不能改变源的.

--------------------编程问答-------------------- linq的本质是扩展方法,linq的那种查询表达式到最后都会被编译器翻译成扩展方法的.跟ESQL不是一回事情. --------------------编程问答--------------------
引用 50 楼 hawksoft 的回复:
linq的本质是扩展方法,linq的那种查询表达式到最后都会被编译器翻译成扩展方法的.跟ESQL不是一回事情.


呵呵,这不是linq的本质。如果说linq的本质,而是linq在c#的必要前提

如果说linq本质,那么你就不得不去区分一下IEnumerable<T>和IQueryable<T>这个版本的实现


1.基于可泛型迭代接口IEnumerable<T>的linq实现,其参数多为直接的委托比如 func<T,bool>,这种方式是经典的 迭代器+算法容器思想的灵魂复苏。说linq慢的人多是指这块,其实他并不慢。从单纯算法上看效率还不错,只是因为你之前需要数据填充过程,对大数量的东西来说光填充数据的过程就比较难受。另外一个是基于这块的实现是即时执行的,一个方法一个迭代过程,那么在大数量多个方法组合的情况下也比较难受

2. 基于可泛型迭代接口IQueryable<T>的linq实现,其参数多为表达式,而非直接的委托。比如Expression<func<T,bool>>,这种方式则是另外一个经典,编译原理+表达式树的灵魂复苏。这种方式整个过程并不直接查询对象,他只是把方法组合转成一个表达式树。而具体查询对象只有你第一次访问getEnumer的时候才去把表达式树一次性翻译成对应语法版本(可以是c#,可以是sql)的代码,这种方式是延迟查询的的,所以可以进行一定的优化,也可以使用不同的提供翻译成不同的语法版本。

ps:也同样也是回复47楼的疑问  --------------------编程问答--------------------
引用 5 楼 caozhy 的回复:
初级程序员的另一个问题是,根本就不知道什么是linq,他们分不清linq和linq to sql,明明是C#语言特性,非认为是什么ORM框架。

实际上他们除了精通各种GridView、repeater的绑定,对其他名词大多是一知半解。
对 --------------------编程问答-------------------- 不会ado.net的飘过 --------------------编程问答-------------------- 不要盲目使用新技术,尤其是微软的新技术。    微软经常拿程序员当小白鼠。
    学习这些新语法非常容易,要用半天时间就学会了。   没什么值得大不了的。 --------------------编程问答--------------------
引用 41 楼 caozhy 的回复:
引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水程序员”(虽然我认为这种人根本不算程序员,因为程序员必然是编写程序、创造代码的)不需要……



鄙视你caozhy  你现在可能算有点实力,可你不一从“胶水程序员”走过来的么,还是你在微软的linq诞生以前就会linq了,有必要去指责刚入行的新人或菜鸟不是程序员么。 --------------------编程问答--------------------
引用 55 楼 sanop 的回复:
引用 41 楼 caozhy 的回复:

引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水程序员”(虽然我认为这种人根本不算程序员,……


我纠正你下,每个人都是从不会到会的,每个人都有初学的阶段,这个没错。但是不是每个人都必须经历“胶水程序员”的阶段。相反,胶水程序员是一个独立的职业曲线,胶水程序员本身如果没有转变的动机,只能成为熟练的胶水程序员。这好比一个打字小姐不是打字很多年后就能成为计算机专家一样。

胶水程序员的表征我上面说了,但是产生原因我没有说,胶水程序员的本质是,他们浑浑噩噩混这个行当,缺乏理论基础,不懂学习和思考,编程为了混饭吃。他们没有耐心钻研编程这门技艺,更无心学习他们视作冗繁的理论和规则,他们讲求速成,学习那些有钱途的快餐技术,没有理想和信念。

我不在乎别人的褒奖或鄙视,因为编程本身就是我的爱好,优雅的代码就是最好的回报。这是你们无法理解的。 --------------------编程问答-------------------- 作为一个公司,他的目标是从事生产活动,要求的是从业者基本的职业技能和素养,这完全和什么新手、菜鸟之类的毫不搭界。新手、菜鸟应该在学校里面去探索、允许在学习的时候有失败。一个公司有最起码的责任就是招聘已经学成合格的程序员。一旦你成为一个程序员,你收人钱财为人办事,你必须专业。你没有任何借口创造垃圾。这好比一个医生给病人吃错了药导致病人死亡,当然社会舆论应该指责这个庸医,而不是用哪个医生生来就会开处方,每个人都有不会的开始之类的托词掩饰。

对于垃圾的软件公司和从业人员,我就不吝惜笔墨唾弃他们。 --------------------编程问答-------------------- 其实那个查询没有什么很神奇的地方,linq开始本来就是用扩展方法实现的,至于查询表达式,我的博客中就有我自己对其的一个模拟。当然,我没办法做到微软那种,因为有些东西是需要底层编译器支持的。 --------------------编程问答-------------------- http://www.cnblogs.com/gjcn/archive/2008/11/12/1331287.html
http://blog.csdn.net/pjjdisc/article/details/6118333
因为,我刚接触linq的时候,在有本书里就讲了其原理,还把扩展方法中和lambda表达式做了对比的。忘记是那本书了,去搜了一下,网友写的,也可以看到12. --------------------编程问答-------------------- 编译器最后还是把Linq表达式翻译为正常的函数调用。你能够使用Linq表达式,是因为编译器支持这种语法,而且其背后有某个provider支持。
支持CaoZhy,胶水程序员不等于初级程序员。 --------------------编程问答-------------------- 看了半天,也没看出来linq到底有什么不可替代性,只是感觉有些人认为用了linq等于水平高,否则就是水平低 --------------------编程问答--------------------
引用 60 楼 deping_chen 的回复:
编译器最后还是把Linq表达式翻译为正常的函数调用。你能够使用Linq表达式,是因为编译器支持这种语法,而且其背后有某个provider支持。
支持CaoZhy,胶水程序员不等于初级程序员。


看来有些人水平也不怎么样,比胶水好不到那去。。。

还在讨论语言本身的特性,要学习小平同志的精神,一项特性用在合适的地方就行了 --------------------编程问答--------------------
引用 62 楼 darkinger 的回复:
引用 60 楼 deping_chen 的回复:

编译器最后还是把Linq表达式翻译为正常的函数调用。你能够使用Linq表达式,是因为编译器支持这种语法,而且其背后有某个provider支持。
支持CaoZhy,胶水程序员不等于初级程序员。


看来有些人水平也不怎么样,比胶水好不到那去。。。

还在讨论语言本身的特性,要学习小平同志的精神,一项特性用在合适的地方就行了


你这是小平精神还是鸵鸟精神?一项特性用在合适的地方就行了,前提是你知道LINQ在什么地方用“合适”?胶水们引用这句话其实想说的是我不会的就不合适,不合适的就不用。 --------------------编程问答-------------------- 据我理解,很多公司,技术总监决定了公司技术走向。然后,很多技术总监都是老头,对新事物比较的抗拒,宁愿用一些熟悉的东西,来追求稳定。而且使用新技术需要花更多的成本去学习,这个对于比较抠的老总也是不能接受的。
另一个方面,很多公司都有自己的框架,自己的orm。我之前带过的一家公司,有一套非常方便的数据库操作框架,使用起来非常的方便,就敏捷开发来说,比linq有过之而无不及,所以,大家对linq都不是很感冒。 --------------------编程问答-------------------- 用什么技术是根据项目和团队的需要...... --------------------编程问答--------------------
引用 64 楼 xiaoyu821120 的回复:
据我理解,很多公司,技术总监决定了公司技术走向。然后,很多技术总监都是老头,对新事物比较的抗拒,宁愿用一些熟悉的东西,来追求稳定。而且使用新技术需要花更多的成本去学习,这个对于比较抠的老总也是不能接受的。
另一个方面,很多公司都有自己的框架,自己的orm。我之前带过的一家公司,有一套非常方便的数据库操作框架,使用起来非常的方便,就敏捷开发来说,比linq有过之而无不及,所以,大家对linq都不是……


评论前先搞清楚你在评论什么。linq和ORM没有关系,它是C# 3.0之后语言的一部分。就算不愿意了解,这个帖子也说得很清楚了。为什么都和没有脑子一样呢? --------------------编程问答-------------------- 如果你写linq,但是其他人不懂,那么在公司里面就有麻烦了。。。。。

写循环,筛选,读数据,一般正常人都懂,也方便调试,这是国情呀。 --------------------编程问答--------------------
引用 67 楼 ask8cn 的回复:
如果你写linq,但是其他人不懂,那么在公司里面就有麻烦了。。。。。

写循环,筛选,读数据,一般正常人都懂,也方便调试,这是国情呀。


这样的团队就是完全失败的团队。落后的个体不像其他个体学习,尽快赶上,相反,团队中每个人都像最差的那个看齐。他不会,其他人会了也要装不会。这哪里是国情,你有勇气说出这种垃圾公司的名字,让我们看看有没有普遍性么? --------------------编程问答-------------------- 像=〉向

另外就是还是我说的。LINQ是C#语法的一部分,每个合格的C#程序员必须掌握。并且一个C#程序员有意识的不用LINQ很困难,如同有意识地避免在程序中使用switch...case或者while一样,因为它是基本的语言要素。一个公司可以拒绝使用某些可有可无的技术,但是基本的语言,你说用某些语法,另一些不用,似乎没有这个道理。软件公司招聘C#程序员,不应该找一个不会LINQ的,好比找播音员不应该找一个大舌头的一样。

一个C#程序员,不应该假设他的合作伙伴、团队成员连C#语法都掌握不了。就像一个中国人写文章不应该假设他的读者看不懂祈使句和反问句。 --------------------编程问答--------------------
引用 55 楼 sanop 的回复:
引用 41 楼 caozhy 的回复:

引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水程序员”(虽然我认为这种人根本不算程序员,……


没办法,因为有行业壁垒的存在,不明白的可以自己搜索下来看了。 --------------------编程问答-------------------- 另外,某人还说“还是你在微软的linq诞生以前就会linq了”,我想无知不会让你说出这样的话感到羞愧,但是如果你能多了解一些,就不会这么说了。

我想告诉你的是,对于支持高阶函数(C#叫匿名委托语法)、集合操作(所谓单语句多数据操作符)、函数式的语言,出现类似linq的语法是必然的。这样的语言包括ruby、javascript、python、lisp等等。C#只是一个后来模仿者而已。 --------------------编程问答-------------------- 在回答楼主的问题,因为现在很多.net的项目仍然基于2.0,所以不会去用Linq的。学习新技术需要成本,在项目中使用新技术不仅需要成本还要冒风险。 --------------------编程问答--------------------
引用 71 楼 caozhy 的回复:
我想告诉你的是,对于支持高阶函数(C#叫匿名委托语法)、集合操作(所谓单语句多数据操作符)、函数式的语言,出现类似linq的语法是必然的。这样的语言包括ruby、javascript、python、lisp等等。C#只是一个后来模仿者而已。


这句话 正点,  C# 里的匿名函数,委托  就好像是 从 javascript的闭包 演练过来的


--------------------编程问答--------------------
引用 69 楼 caozhy 的回复:
像=〉向

另外就是还是我说的。LINQ是C#语法的一部分,每个合格的C#程序员必须掌握。并且一个C#程序员有意识的不用LINQ很困难,如同有意识地避免在程序中使用switch...case或者while一样,因为它是基本的语言要素。一个公司可以拒绝使用某些可有可无的技术,但是基本的语言,你说用某些语法,另一些不用,似乎没有这个道理。软件公司招聘C#程序员,不应该找一个不会LINQ的,好比找播……


你那些徽章都是灌水得到么?
尽然说LINQ是C#语法的一部分! --------------------编程问答-------------------- 所谓LINQ,就是语言(L)内置(IN)查询(Q)。

LINQ 为 C# 添加了如下关键字:select from join groupby order by equals in where ascending descending on into 等等。

所以说LINQ是C#语法的一部分,当然,严谨地说,是C# 3.0+ 以上语法的一部分。 --------------------编程问答-------------------- 进一步说,那些为LINQ表达式、操作符、类型、初始化等等提供支持的语法(C#3增进的核心),也可以归为泛LINQ语法,包括匿名类型、对象初始化器、Lambda表达式、扩展方法、var关键字和类型推定。

C# 3增加的语法特性主要是为LINQ服务的,或者为LINQ量身定做的,这些泛LINQ语法拿走一个,LINQ都无法运作。

当然也有一些不直接和LINQ相关的语法,比如自动属性。但是考虑到和为LINQ to DB等场合出现的对POCO类的大量需要,这种简化语法其实也和LINQ也有相当的关联。 --------------------编程问答--------------------
引用 73 楼 wenjun0922 的回复:
引用 71 楼 caozhy 的回复:

我想告诉你的是,对于支持高阶函数(C#叫匿名委托语法)、集合操作(所谓单语句多数据操作符)、函数式的语言,出现类似linq的语法是必然的。这样的语言包括ruby、javascript、python、lisp等等。C#只是一个后来模仿者而已。


这句话 正点, C# 里的匿名函数,委托 就好像是 从 javascript的闭包 演练过来的

……

纠正你下,闭包和高阶函数是完全不同的概念。 --------------------编程问答-------------------- 请先了解Linq再来骂吧 无语。你可以不学,请不要骂! --------------------编程问答--------------------
引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。

在数据库排了一次,如果又要复用这些数据,用另外一种排序,请问是不是你又要重新写一次SQL语句呢? --------------------编程问答-------------------- 在拿到数据之后,可以使用linq to object在内存中排序和筛选出各种各样的数据,来对应各种各样的需求。
难道离开数据库,什么也做不了吗? --------------------编程问答--------------------
引用 80 楼 felixfj 的回复:
在拿到数据之后,可以使用linq to object在内存中排序和筛选出各种各样的数据,来对应各种各样的需求。
难道离开数据库,什么也做不了吗?

你解释的内容已在我的了解泛围内,没有解决我的疑惑,我是不了解linq的底层与传统的泛型加反射有什么优势。对离线数据的排序和操作,从1.0时代的dataset和2.0的泛型就都可以了。
我不明白的是,它是否有特殊的性能优化,还只是一种语法糖,背后还是这些老东西。
我是支持使用linq,并且在工作中也用的,我只是不明白,在linq排序的时候,它是不是最终还是使用了一个泛型的比较器来完成的。 --------------------编程问答--------------------
引用 81 楼 hwbox 的回复:
引用 80 楼 felixfj 的回复:
在拿到数据之后,可以使用linq to object在内存中排序和筛选出各种各样的数据,来对应各种各样的需求。
难道离开数据库,什么也做不了吗?

你解释的内容已在我的了解泛围内,没有解决我的疑惑,我是不了解linq的底层与传统的泛型加反射有什么优势。对离线数据的排序和操作,从1.0时代的dataset和2.0的泛型就都可以了。
我不明白的是,它……

那我建议你要看linq的源代码了,这样猜也不好的
不行直接看源代码 --------------------编程问答-------------------- caozhy 对ling很推崇,你竟然这样说Ling。。
哈哈。。这就是结果。 --------------------编程问答-------------------- 我用差顺手,也没见慢,所以觉得没有什么问题 
只是没有深入下去了 --------------------编程问答-------------------- 既然我们现在运作得很好,干嘛要插入一个新技术去自寻烦恼呢?
我想这是大多数公司都不用的原因。

现在新技术层出不穷,很多你还没听说就已经消亡,犯不着每个都去学。
siverlight快完全消逝了。

当然我不否定哪些热爱新技术喜欢专研的技术人员,确实这样的人才很宝贵,但就公司而言,最重要的是赚钱。
--------------------编程问答--------------------
引用 83 楼 ly745455 的回复:
caozhy 对ling很推崇,你竟然这样说Ling。。
哈哈。。这就是结果。


纠正下,Linq没有什么值得推崇的。如同没有人推崇使用struct,或者使用for循环一样。这只是C#语言的一部分。那些拿什么orm、siverlight等等来比较的小白们,根本就是乱扯。LINQ和这些没有可比性。 --------------------编程问答--------------------
引用 42 楼 caozhy 的回复:
引用 39 楼 smg008 的回复:
linq 执行的时候也是翻译成sql语句才执行的


又来一个根本连LINQ是什么都不知道的。为什么那么多人在论坛里面发表高见之前就不能先了解下自己评论的是什么呢?

难道LINQ to db不是这样的? --------------------编程问答-------------------- 我看了几个就没法看了 
恶心,各个公司都有自己的需求,为什么非要用linq --------------------编程问答-------------------- 用过sunsonic 的说。没用过linq --------------------编程问答-------------------- 有些人认为自己用LINQ水平就比不用LINQ的高 我呸! --------------------编程问答--------------------
引用 90 楼 z81434362 的回复:
有些人认为自己用LINQ水平就比不用LINQ的高 我呸!


这不是关乎水平高低的问题,而是是不是合格程序员的问题。

如同会使用方程,对于一个理工科的大学生,不等于他水平很高。相反,连方程都不会,那基本就是买文凭来滥竽充数的了。 --------------------编程问答-------------------- 所以那些根本连基本语法都无法掌握的所谓“程序员”,自然对LINQ有些小情绪,纷纷来对号入座,表达不爽,这很正常。 --------------------编程问答-------------------- 楼上正确 呵呵 --------------------编程问答-------------------- 南郭先生们可以醒醒啦。走进书店,翻阅下C# 3.0以后出的各种C#技术书籍(国人炮制的技术大全、代码宝典不算)列出的示范代码,很难找到不用LINQ的。

在微软.NET 3.0时代以后开放源代码的库,比如MVC框架的源代码中,LINQ也是随处可见。在codeplex的各种托管项目,小到只有几百行的命令行程序,都可以随便看到LINQ代码。我们甚至可以从统计学上根据一个代码的规模(行数)估计出它用了多少LINQ查询。

如果你去一个稍微正规点的软件公司,或者从稍微正规点的软件公司接手代码,肯定要和LINQ打交道。

这些完全可以说明LINQ用不用完全是伪命题,也就是一开始我说的“实际上应该不应该用LINQ这种可笑的问题在程序员中早就达成了共识”。 --------------------编程问答-------------------- LINQ的使用对于一个合格的C#程序员来说,应该是无意识行为,根本上升不到项目的决策、公司的决策。而是编码的时候,这里很自然的一个LINQ表达式就写出来了。你问我昨天我在项目中用了多少次LINQ,我是记不起来的。这就好比我昨天定义了几个对象,用了几个接口我是不清楚的一样——没有公司会在例会上讨论,今天我们项目中是否使用接口,或者定义对象。 --------------------编程问答--------------------
引用 88 楼 hebeijg 的回复:
我看了几个就没法看了 
恶心,各个公司都有自己的需求,为什么非要用linq


当然,如果不使用C#语言,根本就谈不上用LINQ了。但是如果使用C# 3.0(+),不使用LINQ,这丝毫和“需求”没关系,而是这些所谓的程序员不会用LINQ,甚至如论坛很多人那样,连什么是LINQ都不知道。 --------------------编程问答-------------------- 想学习linq to sql ,网上的评价有说好有说不好的,敢问实际用在项目中的大大们,linq to sql 的执行效率如何?会不会很慢? --------------------编程问答-------------------- 视乎你已经成仙了,呵呵.
引用 56 楼 caozhy 的回复:
引用 55 楼 sanop 的回复:
引用 41 楼 caozhy 的回复:

引用 36 楼 hwbox 的回复:
我也有个疑惑,不知道为什么很多linq程序员看不起数据库端排序统计,而对linq中的排序统计很推崇。
是真心不懂,本人也对linq的底层实现不明白。


因为排序、统计作为很多算法的基础,本身是程序员创建一般代码的需要。这样的代码并非依赖用户界面或者数据库。“胶水……
--------------------编程问答-------------------- 楼主跑来置疑linq 也不调查下 真是的 --------------------编程问答-------------------- 现在csdn上的程序猿都是什么职业素质啊,也怪中国所谓软件公司 那水平 真是 吓傻
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,