Java LINQ(或LINQ)是一个利基工具,还是正在成为基础工具?
在阅读“”之后,我想知道,(小写)语言集成查询——换句话说,使用简洁语法对对象集合或外部存储执行查询的能力——是否将成为大多数通用语言的未来发展方向?或者LINQ是一项有趣的技术,它仍然局限于微软的语言?介于两者之间Java LINQ(或LINQ)是一个利基工具,还是正在成为基础工具?,java,.net,python,linq,Java,.net,Python,Linq,在阅读“”之后,我想知道,(小写)语言集成查询——换句话说,使用简洁语法对对象集合或外部存储执行查询的能力——是否将成为大多数通用语言的未来发展方向?或者LINQ是一项有趣的技术,它仍然局限于微软的语言?介于两者之间 编辑:我不懂其他语言,但在我学习的过程中,LINQ似乎既不是前所未有的,也不是独一无二的。LINQ中的想法——lambdas和queries——以其他语言呈现,而且这些想法似乎正在传播 我想说,任何语言中的集成查询技术都将成为基础,特别是考虑到最近函数式编程语言的兴趣上升 无论如何
编辑:我不懂其他语言,但在我学习的过程中,LINQ似乎既不是前所未有的,也不是独一无二的。LINQ中的想法——lambdas和queries——以其他语言呈现,而且这些想法似乎正在传播 我想说,任何语言中的集成查询技术都将成为基础,特别是考虑到最近函数式编程语言的兴趣上升
无论如何,LINQ肯定是我个人坚持使用.NET的最大原因之一——它已成为我个人的基础,我敢打赌许多开发人员也有这种感觉。免责声明:我从未使用过LINQ。如果我错了,请纠正我 许多语言都有允许使用语言数据类型实现与LINQ相同的功能的结构。
显然,最有趣的特性是LINQ构造可以转换为SQL,但它并不特定于LINQ:。我不认为您真的可以将它(或许多东西)归类为SQL。虽然我很难说LINQ是一个利基工具——它对很多人都有很多应用——但在我看来,它不是“基础性”的。然而,我也不会说,在游戏的这个阶段,拥有LINQ(或同等的)特定于语言的查询语言是真正的基础性的。也许在将来,但现在您可以用许多不同的方式构造查询,从而产生显著不同的性能级别 这听起来很像Ruby的活动唱片,但我从未使用过LINQ。有人两者都用了吗?(我本想将此作为评论发布,但我真的希望得到最新的答案——我可能错了,所以会被否决:)) (事实上,我应该说AR就像LINQ到SQL一样,据我所知,他们还没有为其他目标实现AR)花了几年时间
- 手工制作数据库访问(多种语言)
- 通过实体框架
- 通过每月一次的ORM获取和存储数据
(顺便说一句,LINQ通常也很好,不仅仅是LINQ到SQL:-)我认为LINQ下的函数概念将在许多语言中流行。通过一组函数传递一系列对象,以获得所需的对象集。本质上,在查询语法上使用lambda语法 这是一种非常强大且富有表现力的编码方式 这并不是因为我觉得这是一种基本上更好的方法(即lambda优于查询语法)。相对而言,向语言中添加查询表达式的底层库支持要比添加查询语法容易得多。查询所需的lambda语法是
- 兰博达斯
- 底层查询方法
但是,要将查询语法引入到语言中,需要做更多的工作 我认为linq不会局限于microsoft语言,看看吧,php已经有了一些东西,看看吧 我认为Linq在开发过程中是一个很好的工具,我个人非常高兴它能在Linq之前被移植到其他语言(比如我的php示例),Python拥有Linq,Linq是对集合执行查询的特定语法。Python的语法比Linq的要精简得多,但基本上可以像在Linq中一样轻松地执行相同的查询。几个月前,我写了一篇文章,下面是一个小例子: 林克: Python生成器表达式:
orders = ( (c.customer_id, o.order_id)
for c in customers if c.region == 'WA'
for o in c.orders if o.date >= cutoff_date)
编程语言中的查询语法是非常有用的工具。我相信每种语言都应该包含类似的内容。作为澄清,LINQ to SQL和LINQ to entities(您所指的可以将LINQ表达式转换为数据库查询的技术)是建立在LINQ之上的。在其核心,LINQ只是一种特定于语言的方式,将对特定接口上扩展方法的调用链接起来。许多语言都有select语句,where子句?我不知道有那么多。面向数据库的语言,是的。但是通用的呢?Perl?python从我提到的问题来看,Java没有。你能举一些例子吗?Python没有
select
语句或where
子句,但是列表和生成器理解做同样的事情。列表理解在函数式语言中非常常见。我认为列表和生成器理解是用于创建列表和枚举表,而不是使用它们。虽然我认为LINQ实际上是一种消费和创造它们的东西……首先我听说了术语表的理解。我看了一下,看起来列表理解是select+where子句。实体框架呢?它可以支持任何类型的数据库,您只需要适当的提供者“适当的提供者”对于一些数据库来说是个问题。它们不存在,或者arn还没有准备好生产。看,这就是问题所在。我认识林克,但不认识阿尔。
orders = ( (c.customer_id, o.order_id)
for c in customers if c.region == 'WA'
for o in c.orders if o.date >= cutoff_date)