[ 
https://issues.apache.org/jira/browse/GROOVY-8258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16089058#comment-16089058
 ] 

John Wagenleitner commented on GROOVY-8258:
-------------------------------------------

The DSL looks like it could be useful in certain situations.  But my opinion is 
that something like this would be best provided as an external library and not 
included (from the start anyway) as part of Groovy itself or one of its 
subprojects.

> Create a LINQ-like DSL
> ----------------------
>
>                 Key: GROOVY-8258
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8258
>             Project: Groovy
>          Issue Type: Improvement
>            Reporter: Daniel Sun
>
> *Pojos:*
> {code:java}
> class Category {
>    String name
>    List<Article> articles
> }
> class Article {
>   String name
>   Integer voteCount
>   String categoryName
> }
> {code}
> *Example1:*
> {code:java}
> linq { // return an Iterator<Map<String, Object>>
>     from c of categories
>     join a of articles on a.categoryName == c.name // join
>     where c.name == 'Groovy'
>     orderBy a.voteCount desc // order by
>     limit 100 offset 50 // pagination
>     select { // create a map, its keys: articleName, voteNum, categoryName
>         articleName = a.name
>         a.voteCount 
>         categoryName = c.name
>     }
> }
> {code}
> *Example2:*
> {code:java}
> linq { // return an Iterator<Map<String, Object>>
>     from c of categories
>     join a of {
>         from tempA of articles
>         where tempA.voteCount > 10
>         select tempA
>     } on a.categoryName == c.name // join
>     where c.name == 'Groovy'
>     orderBy a.voteCount desc // order by
>     limit 100 offset 50 // pagination
>     select { // create a map, its keys: articleName, voteNum, categoryName
>         articleName = a.name
>         a.voteCount 
>         categoryName = c.name
>     }
> }
> {code}
> *Example3:*
> {code:java}
> linq { // return an Iterator<Article>
>     from c of categories
>     from a of c.articles  // another join
>     where c.name == 'Groovy'
>     orderBy a.voteCount desc // order by
>     select Article { // create an Article instance
>         a.name
>         a.voteCount 
>         categoryName = c.name
>     }
> }
> {code}
> *TO BE CONTINUED...*



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to