LINQ的Java等价物是什么?


当前回答

对于Java来说,并不是真正的“Linq to SQL”。但有点接近。查询DSL

其他回答

您可以尝试此库:https://code.google.com/p/qood/

以下是使用它的一些原因:

轻量级:只有9个公共接口/类需要学习。类似SQL的查询:支持groupby、order by、left join、,公式等对于大数据:使用文件(QFS)而不是堆内存。尝试解决对象关系阻抗失配。

有一个叫做quaere的项目。

这是一个Java框架,它增加了查询集合的能力。

注:根据作者的说法,该项目已不再维护。

听起来大家在这里谈论的Linq只是LinqToObjects。我认为,它只提供了今天已经可以用Java实现的功能,但语法非常难看。

我认为Linq在.Net中的真正优势在于,lambda表达式可以在需要委托或表达式的上下文中使用,然后将其编译为适当的形式。这使得LinqToSql(或LinqToObjects以外的任何东西)这样的东西能够工作,并允许它们具有与LinqToObject相同的语法。

看起来上面提到的所有项目都只提供LinqToObjects的功能。这让我觉得LinqToSql类型的功能对于Java来说还没有出现。

有编程语言Pizza(一个Java扩展),你应该看看它。-它使用“流畅接口”的概念以声明方式查询数据,这在原则上与LINQ w/o查询表达式相同(http://en.wikipedia.org/wiki/Pizza_programming_language). 但遗憾的是,这并没有被追求,但这将是将类似LINQ的东西引入Java的一种方式。

一位匿名用户提到了另一个,Diting:

Diting是一个类库,它通过可链接方法和匿名接口(如.NET中的Linq)提供对集合的查询功能。与大多数其他使用静态方法的集合库不同,Diting提供了一个核心Enumerable类,该类包含可链接方法以实现对集合或数组的查询。支持的方法:any、cast、contact、contains、count、distinct、elementAt、except、first、firstOrDefault、groupBy、interset、join、last、lastOrDefault、ofType、orderBy、orderByDescending、reverse、select、selectMany、single、singleOrDefault、skip、skipWhile、take、takeWhile、toArray、toArrayList、union,其中