atitit. groupby linq的實現(1)-----linq架構選型 java .net php

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.