0
一个分组集合多数民众赞成在不工作的代码:ORDERBY在linq.js
var grouping = Enumerable.from(periods)
.select(function(p){return new PeriodViewModel(p)})
.groupBy("$.periodNumber")
.orderBy("$.date")
.toArray();
的periodviewmodels被periodNumber分组和日期应由日期进行排序上升,但是这不会发生,我猜猜它是因为orderBy中的选择器应该以某种方式引用分组结果...
我不知道。这是测试数据,所以你可以尝试自己:
{
"periods": [
{
"id": 1,
"content": "this is not a test",
"date": 1,
"periodNumber": 1,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 3,
"content": "this might be a test",
"date": 2,
"periodNumber": 1,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 5,
"content": "This is a clause",
"date": 3,
"periodNumber": 1,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 1,
"content": "and not sth to share for all",
"date": 5,
"periodNumber": 2,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 2,
"content": "hello kitty???",
"date": 2,
"periodNumber": 3,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 1,
"content": "Flynnie winnie",
"date": 1,
"periodNumber": 3,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
},
{
"id": 1,
"content": "what do yo say about chol and ra?",
"date": 1,
"periodNumber": 4,
"documents": [
{
"name": "Homework.doc"
},
{
"name": "Todo.xls"
}
]
}
]
}
哈哈,我也想过,但后来我认为订单不是由该组保存......也许...应该尝试过! – Elisabeth 2014-09-22 14:51:02
我不知道这是否在任何规范中,但是我使用的所有linq实现在分组时保留顺序。可能是因为保持这个订单更容易。项目在处理时被抛入一个组中,通常作为一个列表/数组。使用不保存顺序的集合是没有意义的。 – 2014-09-22 15:28:27
原来指定:[Enumerable.GroupBy()](http://msdn.microsoft.com/en-us/library/vstudio/bb534501%28v=vs.100%29.aspx#remarksToggle)。 “IGrouping”对象是根据产生每个“IGrouping ”的第一个键的源元素的顺序产生的。分组中的元素按顺序产生他们出现在源头上。“换句话说,组中的组和项目在从源集合处理时是有序的。 –
2014-09-23 05:16:19