Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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
Java LINQ(或LINQ)是一个利基工具,还是正在成为基础工具?_Java_.net_Python_Linq - Fatal编程技术网

Java LINQ(或LINQ)是一个利基工具,还是正在成为基础工具?

Java LINQ(或LINQ)是一个利基工具,还是正在成为基础工具?,java,.net,python,linq,Java,.net,Python,Linq,在阅读“”之后,我想知道,(小写)语言集成查询——换句话说,使用简洁语法对对象集合或外部存储执行查询的能力——是否将成为大多数通用语言的未来发展方向?或者LINQ是一项有趣的技术,它仍然局限于微软的语言?介于两者之间 编辑:我不懂其他语言,但在我学习的过程中,LINQ似乎既不是前所未有的,也不是独一无二的。LINQ中的想法——lambdas和queries——以其他语言呈现,而且这些想法似乎正在传播 我想说,任何语言中的集成查询技术都将成为基础,特别是考虑到最近函数式编程语言的兴趣上升 无论如何

在阅读“”之后,我想知道,(小写)语言集成查询——换句话说,使用简洁语法对对象集合或外部存储执行查询的能力——是否将成为大多数通用语言的未来发展方向?或者LINQ是一项有趣的技术,它仍然局限于微软的语言?介于两者之间


编辑:我不懂其他语言,但在我学习的过程中,LINQ似乎既不是前所未有的,也不是独一无二的。LINQ中的想法——lambdas和queries——以其他语言呈现,而且这些想法似乎正在传播

我想说,任何语言中的集成查询技术都将成为基础,特别是考虑到最近函数式编程语言的兴趣上升


无论如何,LINQ肯定是我个人坚持使用.NET的最大原因之一——它已成为我个人的基础,我敢打赌许多开发人员也有这种感觉。

免责声明:我从未使用过LINQ。如果我错了,请纠正我

许多语言都有允许使用语言数据类型实现与LINQ相同的功能的结构。
显然,最有趣的特性是LINQ构造可以转换为SQL,但它并不特定于LINQ:。

我不认为您真的可以将它(或许多东西)归类为SQL。虽然我很难说LINQ是一个利基工具——它对很多人都有很多应用——但在我看来,它不是“基础性”的。然而,我也不会说,在游戏的这个阶段,拥有LINQ(或同等的)特定于语言的查询语言是真正的基础性的。也许在将来,但现在您可以用许多不同的方式构造查询,从而产生显著不同的性能级别

这听起来很像Ruby的活动唱片,但我从未使用过LINQ。有人两者都用了吗?(我本想将此作为评论发布,但我真的希望得到最新的答案——我可能错了,所以会被否决:))

(事实上,我应该说AR就像LINQ到SQL一样,据我所知,他们还没有为其他目标实现AR)

花了几年时间

  • 手工制作数据库访问(多种语言)
  • 通过实体框架
  • 通过每月一次的ORM获取和存储数据
是时候让somone以一种易于访问且语言集成的方式与数据库进行对话了。 LINQ到SQL应该在几年前完成。我为提出它的团队鼓掌——终于有了一个有意义的数据库访问框架

它还不是完美的,我目前最头疼的是,对于其他常见数据库,没有对LINQ2SQL的真正支持,对于Java也没有类似的支持


(顺便说一句,LINQ通常也很好,不仅仅是LINQ到SQL:-)

我认为LINQ下的函数概念将在许多语言中流行。通过一组函数传递一系列对象,以获得所需的对象集。本质上,在查询语法上使用lambda语法

这是一种非常强大且富有表现力的编码方式

这并不是因为我觉得这是一种基本上更好的方法(即lambda优于查询语法)。相对而言,向语言中添加查询表达式的底层库支持要比添加查询语法容易得多。查询所需的lambda语法是

  • 兰博达斯
  • 底层查询方法
大多数新的语言支持lambdas(甚至C++最终也能得到它们!)添加库支持是相当便宜的,通常可以由有动力的个人完成


但是,要将查询语法引入到语言中,需要做更多的工作

我认为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)