You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Daniel Sun (JIRA)" <ji...@apache.org> on 2019/06/01 17:42:00 UTC

[jira] [Updated] (GROOVY-8258) Create a LINQ-like DSL

     [ https://issues.apache.org/jira/browse/GROOVY-8258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Sun updated GROOVY-8258:
-------------------------------
    Description: 
Reference: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b/view/SamplePack#content

 

*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...*

  was:
*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...*



> 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
>            Priority: Major
>
> Reference: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b/view/SamplePack#content
>  
> *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
(v7.6.3#76005)