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)