【问题标题】:Is there a Java equivalent for LINQ? [duplicate]LINQ 是否有 Java 等价物? [复制]
【发布时间】:2012-06-08 10:26:29
【问题描述】:

可能重复:
What is the Java equivalent for LINQ?

有很多问题询问是否有 LINQ 的 Java 等效项。但他们中的大多数都错误地指出什么都没有。

【问题讨论】:

  • most of them are incorrectly specifying that there is nothing - 那你为什么要问这个问题,如果你这么确定他们“错误地指定什么都没有”?
  • 我来自 .NET 背景,我正在使用这个库。在研究这样的事情时,我所看到的只是“不,什么都没有”。因此,它适用于必须使用 Java 进行项目的其他人。
  • @Fredrik:这是acceptable and even encouraged
  • @GregKopff 即使还有其他问题问同样的事情?难道他不能只回答其中一个问题,说其他答案是错误的吗?
  • @Pable 但这些已被回答和接受

标签: java linq


【解决方案1】:

此库提供完整的 LINQ API:https://github.com/nicholas22/jpropel-light

它使用函数式构造实现这一点,并且还使用延迟执行。

// select names starting with j, using LINQ-style statements
new String[] { "james", "john", "john", "eddie" }.where(startsWith("j")).distinct().all(println());

【讨论】:

  • 没有 lambda,没有雪茄。获取表达式并将它们分解为它们的组件,并将它们转换为复杂分层查询的 SQL 表达式的能力仍然完全缺失。
  • @DaveMorganTexas LINQ-to-SQL != LINQ.
  • @EvanPlaice - 适当的术语是query expression,而不是SQL expression。如果 Dave 能够进行替换,他的评论将变得更加普遍适用,而不仅仅是在 SQL 领域
  • 正如 What is the Java equivalent for LINQ? 中的 cmets 所指出的,需要对 C# 和 .Net 框架进行更改——Lambdas、扩展方法——只有那时他们才能做到创建作为 LINQ 提供者的方法库。在他们对 Java 进行深度更改之前,所有“LINQ API”都将是浅薄的廉价模仿,附加的“装饰器”,最终仍然需要大量代码才能正确“解决”缺乏深度集成的问题在 LINQ 中。
【解决方案2】:

我自己尝试过的另一个是 jaque:http://code.google.com/p/jaque/

【讨论】:

  • 这是最新的吗?它说它使用 Java 7 闭包。虽然它们在 JDK 7 中没有闭包...
  • 是的,这很奇怪。但它有whereselect等常用方法。
猜你喜欢
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多