• 从C# 3.0说以人为本(二)—— LINQ语法结构


    接着上一次的程序我们继续分析探讨,LINQ语句如下:

    1. var numQuery =
    2.     from num in numbers
    3.     where (num % 2) == 0
    4.     select num;

    小凡第一次看到这个语句时,第一个念头是:为什么select要放在最后?事实上,写惯了SQL,大家都觉得SELECT放在前面才是最舒服的。

     

    问题是:为什么SELECT一定要放在前面?因为SQL放在前面吗?SELECT放在前面一定方便吗?

     

    让我们回忆一下写SQL语句时的尴尬,我想大多数人都是和小凡这样的。

    我们设想下面一种写SQL的情况,有5张表要做互相连接,并且5张表每个表中要取3个字段,那我们的FROM肯定是洋洋洒洒的:FROM TABLE_A A,TABLE_B B,TABLE_C C,TABLE_D D,TABLE_E E。

    可是,又有多少人一开始就能决定5张表要用什么别名呢?以上的情况还是内连接,万一是外连接呢?挂了,FROM就更长了,LEFT OUTTER JOIN……ON……LEFT OUTTER JOIN……ON……,为了方便,SQL的SELECT就变成了SELECT *,等写完了FROM语句,回头再按照别名把*改成“别名.字段”。

    这和一开始不写SELECT *,放到最后写有什么区别?!而且我们还要小心翼翼的把*替换成字段,还要注意空格,因为后面已经写好了FROM,上帝啊,这么麻烦的SQL写法,实在是痛苦不堪!

    好吧,我们没得选择,因为所有的数据库SELECT语句都是这样的,第一个是这样,后面的也要变成这样!这才是灾难的起源,痛苦的根源!不这样写SQL语句根本不能执行!

     

    但是LINQ是不需要按照这样的约定的,因为它和SQL实在是两码事。吸取了SQL的精华,去掉了SQL的糟粕,微软的C#设计师终于把情况扭转了过来,写完FROM再写SELECT,你想要用的信息前面都已经写好了,我们要做的,就是另起一行,按照前面写的别名一个个写需要SELECT的字段。

     

    有的时候,不是大家用的最多的就是最好的,好好想想,在合适的情况下扔掉那些看起来是“铁律”的规律,让真正的以人为本精神充斥你的大脑,让大家觉得熟悉好用,又改掉那些不实用的细节,这才是方便的工具。

  • 相关阅读:
    机器学习python实战----决策树
    机器学习python实战----手写数字识别
    机器学习python实战----k近邻算法
    斯坦福2014机器学习笔记八----机器学习系统的设计
    斯坦福2014机器学习笔记七----应用机器学习的建议
    斯坦福2014机器学习笔记六----神经网络(二)
    Global Game Jam 2019 深圳站 个人总结
    加法乘法线段树模板
    线段树模板题
    单调栈和单调队列入门
  • 原文地址:https://www.cnblogs.com/vanpan/p/3583053.html
Copyright © 2020-2023  润新知