为什么安德烈斯·海尔斯伯格设计的LINQ语法不同于SQL的语法(这使得程序员学习一件全新的东西需要额外的开销)?
如果它使用与SQL相同的语法,不是更好吗?
发布于 2009-10-13 06:32:36
LINQ不应该是SQL。它应该是一种尽可能独立于数据源的查询语言。现在无可否认,它有很强的SQL偏好,但它并不意味着只是将SQL嵌入到源代码中(幸运的是)。
就我个人而言,我更喜欢LINQ的语法而不是SQL的语法,尤其是在LINQ中,排序更符合逻辑。只需查看查询子句的顺序,就可以看到处理查询的逻辑顺序。你从一个数据源开始,可能会做一些过滤,排序等,通常以投影或分组结束。这与SQL相比,在SQL中,您一开始就说出您感兴趣的列,甚至还不知道您正在谈论的是哪个表。
LINQ不仅在这方面更符合逻辑,而且它允许工具更好地与您一起工作-如果Visual Studio知道您从什么数据开始,那么当您开始编写select子句时(例如),它可以帮助您使用IntelliSense。此外,它允许使用扩展方法相对简单地将LINQ查询表达式转换为“点表示法”,而不必让编译器知道查询实际要做什么的任何细节。
所以从我的角度来看:不,如果LINQ一味地遵循SQL的语法,它会更糟糕。
发布于 2009-10-13 06:28:49
首先,选择您喜欢的SQL --有几种!(T-、PL-等)。
归根结底,两者既有相似之处,也有不同之处。LINQ的许多变化更有意义--例如,在尝试过滤(WHERE) /投影(SELECT)之前选择源(FROM),允许更好的静态分析等(包括智能感知),以及更自然的查询理解语法。这对开发人员和编译器都有帮助,所以我很高兴。
发布于 2009-10-13 06:24:51
当表达式的开头提供初始数据时,解析表达式会更简单。
正因为如此,VS甚至为部分编写的LINQ查询提供了代码完成功能(IMO的强大功能)。
https://stackoverflow.com/questions/1558465
复制相似问题