Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“这样做不好吗?”;“思考”;在LINQ中,当技能不是';t可在C#之外转移?_C#_Linq - Fatal编程技术网

“这样做不好吗?”;“思考”;在LINQ中,当技能不是';t可在C#之外转移?

“这样做不好吗?”;“思考”;在LINQ中,当技能不是';t可在C#之外转移?,c#,linq,C#,Linq,我一直在代码中使用LINQ。我已经到了这样一个地步,使用LINQ语法对一堆对象进行分组、排序和组织似乎是如此自然,以至于我很难想象如果没有它,我将如何做同样的事情 在此之前,我从未深入研究过SQL风格的世界,但我想,许多学习过普通SQL语法的人突然感到被大多数普通编程语言处理复杂对象层次结构的能力所束缚 我是不是把自己画进了一个角落,越来越依赖LINQ来完成更复杂的任务?这感觉比我写简单的C代码更有表现力 如果我最终在无法使用类似LINQ的语言或框架的情况下切换语言或框架,那么在日常编程中对LI

我一直在代码中使用LINQ。我已经到了这样一个地步,使用LINQ语法对一堆对象进行分组、排序和组织似乎是如此自然,以至于我很难想象如果没有它,我将如何做同样的事情

在此之前,我从未深入研究过SQL风格的世界,但我想,许多学习过普通SQL语法的人突然感到被大多数普通编程语言处理复杂对象层次结构的能力所束缚

我是不是把自己画进了一个角落,越来越依赖LINQ来完成更复杂的任务?这感觉比我写简单的C代码更有表现力

如果我最终在无法使用类似LINQ的语言或框架的情况下切换语言或框架,那么在日常编程中对LINQ语法的依赖是否会对我造成长期的伤害?

幸运的是,不是。LINQ思维方式更适合理解为“功能性”思维方式,这是一种高度可转移的心态


显然,当您从一种语言移动到另一种语言,从一个框架移动到另一个框架时,语法和框架方法会有所不同,但思维方式是相同的。您获得的重要技能是能够根据序列和处理这些序列的功能管道进行思考。

这有关系吗?每种语言都有其独特的优点。这就像说“在C#中使用大括号会不会让你很难将它转换成另一种非花括号语言?”

我不会着眼于你在C#之外的未来,而是会专注于如何帮助你完成今天的工作


如果这意味着使用LINQ并变得流利,那就顺其自然吧。只要你愿意在将来学习和适应(就像今天一样),这就不是什么大问题。

这不会伤害你。我真的相信所有现代语言很快就会转向这种语法。Java已经朝着这个方向发展,其他语言也将效仿。MS,对于他们所采取的所有抨击,在这一点上远远领先于曲线。在查询数组对象方面,它消除了一整类与临时变量/数组相关的bug。这样做的好处是巨大的。

是的,如果LINQ to SQL是您所知道的唯一SQL,那么它会伤害您。

是的,您的担心是正确的。

也就是说,当你擅长使用任何工具时,你就会开始忘记没有该工具如何运作良好。当该工具不可用时,您也会感到沮丧。

数百万年来,人类不用金属工具就能养活自己。他们并不痛苦。今天,很少有人知道如何做到这一点,而且大多数人都害怕那会是什么样子

几十年来,人类编写软件时没有与计算机进行实时交互,例如穿孔卡片。他们并不痛苦。今天很少有人知道如何做到这一点。对我来说,这样做的想法听起来很痛苦

如果你精通Linq,当它不在的时候,你会错过它。这是一个很棒的工具。随着Linq技能的提高,没有Linq的编程技能(您没有练习)将变得生疏

在上述所有情况下,我们用工具+新的人类技能取代了人类技能。每次,放弃这个工具的想法听起来都很可怕。我相信探索老的、技术含量较低的做事方式总有一些价值,因为它能帮助我变得更全面,但通常我会选择技术含量较高的方式


因此,不要回避Linq,而是要探索其他做事方式,作为程序员自我教育的一部分。Linq是一件伟大的事情。它会蔓延。事实上,.

我发现理解它背后的逻辑有助于我更好地使用LINQ扩展方法。如果你可以编写自己的Where或Group..etc扩展方法,那么使用它们就没有什么丢脸的了。

如果可以把它等同于学习OO,我知道有些人从C语言到OO语言再回到C语言,尽管他们没有可用的对象,但他们往往能够在没有对象的语言中使用许多技术


LINQ也会发生同样的事情吗?

我认为了解像LINQ这样的高级抽象背后的情况很重要,否则可能会出现性能等问题。好笑的是,我们的主持人在这个问题上


所以,如果“在LINQ中思考”意味着忘记这一点,我怀疑这对一些开发人员(目前的公司除外)来说确实如此,那么这可能被认为是“不好的”。

这对我来说很重要,是的。这不是大括号,而是我每天编写代码的方式都在发生重大变化。你读过我的问题吗?如果你说的是LINQ背后的“概念”,它们早在C#和许多语言(如Python)支持这些想法之前就已经存在了。他们从口齿不清的时候就开始了。顺便说一句,是的,我读过你的问题。我认识许多人,他们依赖LINQ的“查询表达式”语法(对概念一无所知),他们编写代码的方式也发生了重大变化。我的回答更针对“查询语法”功能。如果它改变了您的编码方式,那是因为它是一个有用的概念。你越熟悉有用的概念,你就越能更好地利用它们,即使你被迫使用一种不直接支持它们的语言。如果Linq思维模式能让你更好地表达你想做的事情,那么就用它吧。在任何语言中,表达你想做什么的能力都很重要@我同意。正如我在上面的评论中所说,我对“LINQ”一词的看法主要是查询表达式语法。我完全同意Andrew的回答,即基本概念只是函数式编程概念。事实上,这就是为什么我不把lambda表达式算为LINQ的原因。依我看,他们不是林克,而是