標籤:turn 報表 tor roman 51cto illegal pac name entity
atitit. groupby linq的實現(1)-----linq架構選型 java .net php
實現方式有例如以下
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. 嘎自實現 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
做報表統計啊。有個大問題。。有人整過集合的groupby查詢匯總(Sum)沒有喲??已經使用了linq4j,quaere,josql,。ms 對Map字典不起作用。。
1. Dsl/ Java8 Streams AP ,對象化的查詢api ,推薦
persons1.GroupBy(a => a.Name).Select(g => (new { name = g.Key, count
長處是。。型別安全的查詢,而且能使用智能提示功能!
2. Linq::: like sql 的dsl1.1. linq4j (jdk6 ok,jdk7 編譯錯誤,又馬jar下載)
linq4j d fun0 ,fun1 ,fun2 也不是好的dsl..
作者::老哇的爪子Attilax艾龍,EMAIL:[email protected]
轉載請註明來源: http://blog.csdn.net/attilax
1.2. Quaere:Java上的LINQ(新不上sourcecode)
下例從一個從產品列表中得到產品名稱的列表:
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中產品的數量。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產品的數量。
1.計數
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. 嘎自實現
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更easy的...
9. 參考
怎樣將常見的LINQ運算式轉換為Java 8 Streams API運算式.
Linq使用Group By經驗總結 - 51CTO.COM.htm
Java8怎樣進行stream,reduce,collection操作 - 51CTO.COM.htm
atitit. groupby linq的實現(1)-----linq架構選型 java .net php