zoukankan      html  css  js  c++  java
  • 从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的字段。

     

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

  • 相关阅读:
    PAT 1037. 在霍格沃茨找零钱(20)
    PAT 1036. 跟奥巴马一起编程(15)
    Topcoder SRM633 DIV2 解题报告
    HDU 4565 So Easy! 矩阵快速幂 + 共轭数
    HDU 2256 Problem of Precision 矩阵快速幂 + 共轭数
    FZU 1683 纪念SlingShot 矩阵快速幂
    CodeForces 185A Plant 矩阵快速幂
    HDU 2604 Queuing 矩阵快速幂
    HDU 1575 Tr A 矩阵快速幂
    HDU 1757 A Simple Math Problem 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/vanpan/p/3583053.html
Copyright © 2011-2022 走看看