Java LINQ的相似特征
在不同的语言(如JAVA、PHP等)中是否有类似于LINQ.NET的功能?许多语言都有语法或库函数,用于以功能性的方式对对象序列进行操作。例如,Python有lambda函数、列表理解、生成器和itertools模块 然而,我不知道有哪种语言能像LINQ那样简洁明了地做到一切。请记住,LINQ不仅仅是在内存结构上操作的一种方式—LINQ有许多提供程序共享类似的接口: LINQ到对象 功能结构 解决并发冲突 等Java LINQ的相似特征,java,php,linq,Java,Php,Linq,在不同的语言(如JAVA、PHP等)中是否有类似于LINQ.NET的功能?许多语言都有语法或库函数,用于以功能性的方式对对象序列进行操作。例如,Python有lambda函数、列表理解、生成器和itertools模块 然而,我不知道有哪种语言能像LINQ那样简洁明了地做到一切。请记住,LINQ不仅仅是在内存结构上操作的一种方式—LINQ有许多提供程序共享类似的接口: LINQ到对象 功能结构 解决并发冲突 等 微软在LINQ方面做得很好。我相信一些其他语言会从LINQ的成功中得到启发,并考虑如何
微软在LINQ方面做得很好。我相信一些其他语言会从LINQ的成功中得到启发,并考虑如何在不久的将来添加相似的特征。 < P>虽然基本的LINQ特征,如选择MAP和WHO过滤器,都存在于几乎所有的现代编程语言中,但在SQL中,SQL的构建是一个ORM 的工作。 例如,Django ORM允许您使用以下语法进行查询: Posts.objects.filteruser=peter.annotatecomment\u count=count'comment'。按'comment\u count'排序 在LINQ中有点像不太确定:
from p in posts
where p.user == peter
select new { post = p, comment_count = comments.Where(c => c.post == p).Count() }
order by comment_count
当然有,但php是一种编程语言,不像.net framework那样是一种框架。因此,如果您想使用功能,您应该下载一些库、orm或框架以获得更高的效率。我不认为php有那么强大的功能,那可能是linq的等价物。Scala提供了与linq类似的功能 示例:查找所有讲丹麦语的名为Fred的与会者 C: 斯卡拉:
用类似PHP的语言部分实现LINQ。我真的很惊讶没有人谈论它,但我使用了from端口,它工作得不错。它工作得不错,你可以这样做:
$result = from('$employee')
->in( $employeeTable )
->where('$employee => strlen($employee->Name) < 5')
->orderBy('$employee->Name')
->select('$employee');
我甚至为此写了一篇文章。这是有效的Java,但需要这个库:
您是否要求类似的语法或库功能?重复检查这个:github.com/nicholas22/jpropel,例如:新字符串[]{james,john,john,eddie};对于Scala:LINQ本身不是ASP.NET的一部分。它是.NET框架的一部分。ASP.NET也是.NET框架的一部分。.NET Framework中的类型可以在任何.NET语言中使用。VB.NET和C都是.NET语言,它们的语言语法使.NET Framework的LINQ功能更易于使用。
val xs = for {
att <- attendees
if att.name == "Fred"
lang <- att.spokenLanguages
if lang == "Danish"
} yield att
$result = from('$employee')
->in( $employeeTable )
->where('$employee => strlen($employee->Name) < 5')
->orderBy('$employee->Name')
->select('$employee');
import java.util.Arrays;
import lombok.ExtensionMethod;
import lombok.val;
import propel.core.utils.Linq;
import static propel.core.functional.predicates.Predicates.*;
import static propel.core.functional.projections.Projections.*;
@ExtensionMethod({Linq.class})
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
{
val names = new String[] { "john", "james", "john", "eddie" }.where(startsWith("j")).distinct();
System.out.println(Arrays.toString(names));
// prints "[john, james]"
}
}