在像JAVA,PHP等不同语言中是否有类似于LINQ(.NET)的功能?LINQ的相似特性
回答
有许多语言具有语法或库函数,用于以主要功能的方式操作对象序列。例如,Python具有lambda函数,列表解析,生成器和itertools
模块。
但是我不知道任何语言都可以在LINQ可以干净简洁地完成任何事情的地方找到任何地方。请记住,LINQ不仅仅是一个在内存中的结构上操作方式 - LINQ有相似的接口许多供应商:
- LINQ到对象
- 的LINQ to XML
- LINQ到SQL
- 等等。
微软在LINQ方面做得很好。我相信其他一些语言将从LINQ的成功中获得灵感,并考虑如何在不久的将来添加类似的功能。
虽然基本LINQ的功能,如Select
(map
)和Where
(filter
)存在于几乎所有的现代编程语言中,“对飞”构建SQL和懒惰是ORM
工作。例如,Django的ORM允许您使用这样的语法进行查询:
Posts.objects.filter(user=peter).annotate(comment_count=Count('comment')).order_by('comment_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框架之类的框架。所以如果你想使用功能,你应该下载一些库,orms或框架来获得更高的效率。我不认为这个PHP有这个强大的功能,这可能是一个相当于LINQ。
LINQ本身不是ASP.NET的一部分。它是.NET Framework的一部分。 ASP.NET也是.NET Framework的一部分。 .NET Framework中的类型可以用于任何.NET语言。 VB.NET和C#都是.NET语言,它们恰好具有使.NET Framework的LINQ功能更易于使用的语言语法。 – 2010-06-06 19:03:53
感谢您的纠正 – 2010-06-06 19:10:04
Scala提供了与LINQ相似的功能。
示例:查找所有与会者姓名Fred说丹麦语。
C#:
var xs =
from att in attendees
where att.name == "Fred"
from lang in att.spokenLanguages
where lang == "Danish"
select att;
的Scala:
val xs = for {
att <- attendees
if att.name == "Fred"
lang <- att.spokenLanguages
if lang == "Danish"
} yield att
http://code.google.com/p/phpreboot/在PHP状语言部分实现LINQ。
我真的很惊讶,没有人谈论过它,但我使用了LINQ to PHP的端口从Martin Balliauw,这工作挺好。它的工作原理有点不好,你可以做这样的事情:
$result = from('$employee')
->in($employeeTable)
->where('$employee => strlen($employee->Name) < 5')
->orderBy('$employee->Name')
->select('$employee');
我甚至写了small blog post了。
这是有效的Java,但需要这个库:https://github.com/nicholas22/jpropel-light
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]"
}
}
- 1. mysql中的词相似性/相似性
- 2. 如何根据最相似性/相等性对linq结果进行排序
- 3. 散列相似性
- 4. 文档相似性
- 5. 文档聚类的似然相似性
- 6. 多个相似的linq查询
- 7. LINQ to SQL的特性
- 8. 递归选择相似对象(LINQ)
- 9. 余弦相似性问题
- 10. 文档相似性框架
- 11. Elasticsearch单词相似性
- 12. PostgreSQL,trigrams和相似性
- 13. “相似性”数据挖掘
- 14. pySpark Columns相似性问题
- 15. OpenCV ||轮廓相似性
- 16. 搜索颜色相似性
- 17. Lucene:相似类...如何定义几个相似性度量?
- 18. 使用LINQ到对象相交和除特定属性
- 19. 将全局特征添加到SIFT特征以查找图像相似性
- 20. 两组区间的相似性
- 21. NTFS多个相似的属性
- 22. Python中的字符串相似性
- 23. 检索具有相似性的行
- 24. BM25在Elasticsearch中的相似性
- 25. DBSCAN中的替代相似性度量?
- 26. 比较区域的相似性
- 27. 比较多边形的相似性
- 28. 语句之间的语义相似性
- 29. jpa和hibernate的相似性和区别
- 30. 颜色之间的相似性
你问了类似的语法或库功能? – Gabe 2010-06-06 18:38:03
http://stackoverflow.com/questions/346721/linq-for-java-tool重复 – Bozho 2010-06-06 18:40:36
@加布库功能 – kzh 2010-06-06 18:42:31