在下面的代码中,我试图将每个组中的最后五个元素作为单个列表返回,如下图所示。下面的代码无法实现这一点,而是将原始数据集(范围为0-19)作为List返回。
如何更改以下代码以返回下图所示的列表?
void Main()
{
var dataSet = Enumerable.Range(0, 20);
var elementsInEachGroup = 5;
var answer = dataSet.GroupBy(e =>
new
{
oddEven = e % 2,
e
})
.SelectMany(group => group.Skip(Math.Max(0, group.Count() - elementsInEachGroup)))
.ToList();
answer.Dump();
}
答案 0 :(得分:3)
您的GroupBy
表达式包含元素本身,因此每个组只包含一个项目。从e
表达式中删除GroupBy
,它会在图片中显示结果。
.GroupBy(e =>
new
{
oddEven = e % 2
})
或更简单
.GroupBy(e => e % 2)