atitit. groupby linq的实现(1)-----linq框架选型 java .net php
atitit.??groupby?linq的實現(xiàn)(1)-----linq框架選型?java?.net?php
?
實現(xiàn)方式有如下
?
1.?Dsl/?Java8?Streams?AP?,對象化的查詢api?,推薦 1
2.?Linq:::?like??sql?的dsl 1
1.1.?linq4j?(jdk6?ok,jdk7?編譯錯誤,又馬jar下載) 1
1.2.?Quaere:Java上的LINQ(新不上sourcecode) 1
1.3.?joSQL也是與Quaere類似的API 2
1.4.?。net?linq 2
3.?Sql?解析 2
4.?Lambda 2
5.?嘎自實現(xiàn) 3
1.5.?linq4j??code 3
6.?apache?collections4?(不行,馬行上groupby) 3
7.?林吧:::自己DSL來自stream?api?jdk8?相像 3
8.?Stream?api?n?linq的不同 3
9.?參考 3
?
做報表統(tǒng)計啊,有個大問題。。有人整過集合的groupby查詢匯總(Sum)沒有喲??已經(jīng)使用了linq4j,quaere,josql,,ms?對Map字典不起作用。。
1.?Dsl/?Java8?Streams?AP?,對象化的查詢api?,推薦
persons1.GroupBy(a?=>?a.Name).Select(g?=>?(new?{?name?=?g.Key,?count
?
優(yōu)點是。。類型安全的查詢,并且能使用智能提示功能!
2.?Linq:::?like??sql?的dsl
1.1.?linq4j?(jdk6?ok,jdk7?編譯錯誤,又馬jar下載)
linq4j??d?fun0?,fun1?,fun2?也不是好的dsl..
?
?
作者::老哇的爪子Attilax艾龍,EMAIL:1466519819@qq.com
轉(zhuǎn)載請注明來源:?http://blog.csdn.net/attilax
?
1.2.?Quaere:Java上的LINQ(新不上sourcecode)
下例從一個從產(chǎn)品列表中得到產(chǎn)品名稱的列表:
List?products?=?Arrays.asList(Product.getAllProducts());
Iterable?productNames?=
??from("p").in(products).
??select("p.getProductName()");
?
1.3.?joSQL也是與Quaere類似的API
這個到是有jar下載了...好像不支持list(map),only???list(bean)
?
?
Caused?by:?java.lang.IllegalArgumentException:?Cannot?find?method?with?name:?url?in?class:?java.util.Map
?
1.4.?。net?linq
語句描述:Linq使用Group?By和Count得到每個CategoryID中產(chǎn)品的數(shù)量。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產(chǎn)品的數(shù)量。
?
1.計數(shù)
1?var?q?=??
2?from?p?in?db.Products??
3?group?p?by?p.CategoryID?into?g??
4?select?new?{??
5?g.Key,??
6?NumProducts?=?g.Count()??
7?};?
?
3.?Sql?解析??
缺點是不能使用使用ide智能提示
4.?Lambda?
?
5.?嘎自實現(xiàn)
?
1.5.?linq4j??code
?
??Linq4j.asEnumerable(emps)
????????????.groupBy(
????????????????EMP_DEPTNO_SELECTOR,?new?Function0<String>()?{
??????????????????public?String?apply()?{
????????????????????return?null;
??????????????????}
????????????????},?new?Function2<String,?Employee,?String>()?{
??????????????????public?String?apply(String?v1,?Employee?e0)?{
????????????????????return?v1?==?null???e0.name?:?(v1?+?"+"?+?e0.name);
??????????????????}
????????????????},?new?Function2<Integer,?String,?String>()?{
??????????????????public?String?apply(Integer?v1,?String?v2)?{
????????????????????return?v1?+?":?"?+?v2;
??????????????????}
????????????????})
????????????.orderBy(Functions.<String>identitySelector())
????????????.toList()
????????????.toString();
?
6.?apache?collections4?(不行,馬行上groupby)?
7.?林吧:::自己DSL來自stream?api?jdk8?相像
8.?Stream?api?n?linq的不同
Stream??是基于lambda的dsl??,?語法不跟個sql雅十...這個更靈活...
?
Linq,雅十dsl,走十語法跟個sql雅十..linq更容易的...
?
9.?參考
如何將常見的LINQ表達式轉(zhuǎn)換為Java?8?Streams?API表達式.
Linq使用Group?By經(jīng)驗總結(jié)?-?51CTO.COM.htm
Java8如何進行stream,reduce,collection操作?-?51CTO.COM.htm
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的atitit. groupby linq的实现(1)-----linq框架选型 java .net php的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 确保 PHP 应用程序的安全
- 下一篇: 改进的二值图像像素标记算法及程序实现(含